Options
All
  • Public
  • Public/Protected
  • All
Menu

表示一个文件系统监听器

description

本监听器的设计目标是:只针对常见场景,提供轻量、高效、稳定的实现,确保占用 CPU 极低且占用内存极小

  1. 完全基于原生的 fs.watch 实现,低于 Node 10.12 版本不保证稳定性
  2. 可监听文件或文件夹(同时监听子文件夹),可动态调整监听列表,但监听的根路径必须已存在且不能删除
  3. 仅支持文件的增、删、改事件和文件夹的增、删事件,重命名操作会按先删除后创建处理
  4. 文件软链和硬链始终会被替换为链接的目标路径,循环链接会引发错误
  5. 在不支持 fs.watch 的系统(比如虚拟机)可开启 usePolling(基于原生 fs.watchFile 实现),但这会占用较高 CPU

如果以上不符合你的需求,请考虑使用 chokidar

example

const watcher = new FileSystemWatcher() watcher.on("change", path => { console.log("Changed", path) }) watcher.on("delete", path => { console.log("Deleted", path) }) watcher.on("create", path => { console.log("Created", path) }) watcher.add(process.cwd(), () => { console.log("Start Watching...") })

Hierarchy

  • EventEmitter
    • FileSystemWatcher

Index

Constructors

constructor

Properties

compareModifyTime

compareModifyTime: boolean = false

判断或设置是否仅当文件的最后修改时间发生变化才触发更新

delay

delay: number = 256

获取或设置监听延时回调的毫秒数

usePolling

usePolling: boolean = process.platform !== "win32" && process.platform !== "darwin" && process.platform !== "linux" && process.platform !== "aix"

判断是否强制使用轮询监听,轮询监听可以支持更多的文件系统,但会占用大量 CPU

Static defaultMaxListeners

defaultMaxListeners: number

Accessors

isWatching

  • get isWatching(): boolean
  • 判断当前监听器是否正在监听

    Returns boolean

Methods

add

  • add(path: string, callback?: function): void
  • 添加要监听的文件或文件夹

    Parameters

    • path: string

      要添加的文件或文件夹路径

    • Optional callback: function

      添加完成的回调函数,在回调执行前无法监听到文件的修改

        • (error: ErrnoException | null, success: boolean): void
        • Parameters

          • error: ErrnoException | null

            如果添加成功则为空,否则为错误对象

          • success: boolean

            是否已创建新的监听器

          Returns void

    Returns void

addListener

  • addListener(event: string | symbol, listener: function): this
  • Parameters

    • event: string | symbol
    • listener: function
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns this

close

  • close(callback?: function): void
  • 移除已添加的所有监听器

    Parameters

    • Optional callback: function

      移除完成后的回调函数

        • (): void
        • Returns void

    Returns void

emit

  • emit(event: string | symbol, ...args: any[]): boolean
  • Parameters

    • event: string | symbol
    • Rest ...args: any[]

    Returns boolean

eventNames

  • eventNames(): Array<string | symbol>
  • Returns Array<string | symbol>

getMaxListeners

  • getMaxListeners(): number
  • Returns number

Protected handleWatchChange

  • handleWatchChange(path: string): void
  • 处理原生更改事件

    Parameters

    • path: string

      更改的文件或文件夹路径

    Returns void

ignored

  • ignored(path: string): boolean
  • 判断是否忽略指定的路径

    Parameters

    • path: string

      要判断的文件或文件夹路径,路径的分隔符同操作系统

    Returns boolean

isWatchingPath

  • isWatchingPath(path: string): boolean
  • 判断是否正在监听指定的文件或文件夹

    Parameters

    • path: string

      要判断的路径

    Returns boolean

listenerCount

  • listenerCount(type: string | symbol): number
  • Parameters

    • type: string | symbol

    Returns number

listeners

  • listeners(event: string | symbol): Function[]
  • Parameters

    • event: string | symbol

    Returns Function[]

off

  • off(event: string | symbol, listener: function): this
  • Parameters

    • event: string | symbol
    • listener: function
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns this

on

  • on(event: string | symbol, listener: function): this
  • Parameters

    • event: string | symbol
    • listener: function
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns this

Protected onChange

  • onChange(path: string, stats: Stats, prevWriteTime: number): void
  • 当监听到文件修改后执行

    Parameters

    • path: string

      相关的文件路径

    • stats: Stats

      相关的文件属性对象

    • prevWriteTime: number

      文件的上一次修改时间戳

    Returns void

Protected onCreate

  • onCreate(path: string, stats: Stats): void
  • 当监听到文件创建后执行

    Parameters

    • path: string

      相关的文件路径

    • stats: Stats

      文件属性对象

    Returns void

Protected onCreateDir

  • onCreateDir(path: string, entries: string[]): void
  • 当监听到文件夹创建后执行

    Parameters

    • path: string

      相关的文件夹路径

    • entries: string[]

      文件夹内的文件列表

    Returns void

Protected onDelete

  • onDelete(path: string, prevWriteTime: number): void
  • 当监听到文件删除后执行

    Parameters

    • path: string

      相关的文件路径

    • prevWriteTime: number

      文件被删除前最后一次的修改时间戳

    Returns void

Protected onDeleteDir

  • onDeleteDir(path: string, prevEntries: string[]): void
  • 当监听到文件夹删除后执行

    Parameters

    • path: string

      相关的文件夹路径

    • prevEntries: string[]

      文件夹被删除前的文件列表

    Returns void

Protected onError

  • onError(error: ErrnoException, path: string): void
  • 当监听发生错误后执行

    Parameters

    • error: ErrnoException

      相关的错误对象

    • path: string

      原始监听的路径

    Returns void

once

  • once(event: string | symbol, listener: function): this
  • Parameters

    • event: string | symbol
    • listener: function
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns this

prependListener

  • prependListener(event: string | symbol, listener: function): this
  • Parameters

    • event: string | symbol
    • listener: function
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns this

prependOnceListener

  • prependOnceListener(event: string | symbol, listener: function): this
  • Parameters

    • event: string | symbol
    • listener: function
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns this

rawListeners

  • rawListeners(event: string | symbol): Function[]
  • Parameters

    • event: string | symbol

    Returns Function[]

ready

  • ready(callback: function): void
  • 等待所有异步任务都完成后执行指定的回调函数

    Parameters

    • callback: function

      要执行的回调函数

        • (): void
        • Returns void

    Returns void

remove

  • remove(path: string, callback?: function): void
  • 移除指定路径的监听器

    description

    注意如果已监听路径所在的文件夹,移除操作将无效

    Parameters

    • path: string

      要移除的文件或文件夹路径

    • Optional callback: function

      移除完成后的回调函数

        • (success: boolean): void
        • Parameters

          • success: boolean

            如果成功移除监听器则为 true,如果存在更上级的监听器,则为 false

          Returns void

    Returns void

removeAllListeners

  • removeAllListeners(event?: string | symbol): this
  • Parameters

    • Optional event: string | symbol

    Returns this

removeListener

  • removeListener(event: string | symbol, listener: function): this
  • Parameters

    • event: string | symbol
    • listener: function
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns this

setMaxListeners

  • setMaxListeners(n: number): this
  • Parameters

    • n: number

    Returns this

Static listenerCount

  • listenerCount(emitter: EventEmitter, event: string | symbol): number
  • deprecated

    since v4.0.0

    Parameters

    • emitter: EventEmitter
    • event: string | symbol

    Returns number

Object literals

watchOptions

watchOptions: object

获取或设置传递给原生监听器的选项

interval

interval: number = 2500

轮询的间隔毫秒数

persistent

persistent: boolean = true

是否在监听时阻止进程退出

recursive

recursive: boolean = process.platform === "win32" || process.platform === "darwin"

是否使用原生的递归监听支持

Generated using TypeDoc