文件监控系统是 Nodemon 的一个核心组件,它监控指定文件和目录的更改,并在检测到相关更改时触发应用程序重启。本文档涵盖了文件监控系统的架构、配置和操作,包括文件如何与监控规则匹配以及更改事件如何处理。有关这些更改如何实际重启进程的信息,请参阅进程管理。
Nodemon 的文件监控系统由几个相互连接的组件组成,它们协同工作以检测并响应 Node.js 应用程序中的文件更改。
来源: lib/monitor/watch.js26-135 lib/monitor/watch.js137-221 lib/monitor/watch.js223-234
监视器模块负责初始化和管理文件系统监视器。它使用 Chokidar 库来高效地监视文件和目录的更改。
来源: lib/monitor/watch.js1-15 lib/monitor/watch.js26-135
匹配器模块根据配置的规则和模式,确定哪些文件更改应触发应用程序重启。
来源: lib/monitor/match.js1-12 lib/monitor/match.js136-287
Nodemon 启动时,它根据配置的目录和选项初始化文件监视器。
来源: lib/monitor/watch.js26-135
watch 函数通过以下方式初始化文件监控:
存在特殊处理,针对:
当检测到文件更改时,Nodemon 会过滤这些更改并确定它们是否应触发重启。
来源: lib/monitor/watch.js137-221 lib/monitor/watch.js223-244
文件匹配系统负责确定哪些文件更改应触发应用程序重启。
来源: lib/monitor/match.js10-107 lib/monitor/match.js136-287
文件监控系统中的规则可以是积极的(要监视的文件)或消极的(要忽略的文件)。系统遵循以下原则:
! 为前缀)优先于监视规则| 规则类型 | 示例 | 描述 |
|---|---|---|
| 监视规则 | "views/server/*" | 监视 views/server 目录中的所有文件 |
| 忽略规则 | "!node_modules/*" | 忽略 node_modules 目录中的所有文件 |
| 扩展名过滤器 | "js,mjs,json" | 仅监视具有这些扩展名的文件 |
| 模式规则 | "**/*.js" | 监视任何子目录中的所有 JavaScript 文件 |
| 点文件 | ".dotfile" | 明确监视一个点文件(默认忽略) |
来源: lib/monitor/match.js136-165
文件监控系统提供多种配置选项来控制其行为:
| 选项 | 默认 | 描述 |
|---|---|---|
watch | ['*.*'] | 要监视的文件/目录模式数组 |
ignore | 各种系统目录 | 要忽略的模式数组 |
ext | 'js' | 要监视的扩展名列表(逗号分隔) |
legacyWatch | false | 使用轮询而非文件系统事件 |
pollingInterval | 不适用 | 轮询间隔(毫秒) |
delay | 0 | 更改后重启前的延迟(毫秒) |
watchOptions | {} | 直接传递给 Chokidar 的选项 |
来源: lib/config/defaults.js4-26
文件监控系统会根据操作系统调整其行为:
系统包含专门的文件路径处理,以确保跨平台的一致匹配:
来源: lib/monitor/watch.js148-170
来源: lib/monitor/watch.js80-106 lib/monitor/watch.js137-221 lib/monitor/watch.js223-244
文件监控系统包含多项功能以优化性能:
来源: lib/monitor/watch.js210-218 lib/monitor/watch.js236-244
文件监控系统主要通过事件总线与其他 Nodemon 组件集成:
"watching" 事件"restart" 事件"reset" 事件,以便在配置更改时重置监视器来源: lib/monitor/watch.js97 lib/monitor/watch.js233
文件监控系统包含错误处理功能,以管理常见问题: