本文档涵盖了 nodemon 除了基本文件监控和服务器重启功能之外的高级场景和配置。如果您是 nodemon 的新手,请参阅安装和快速入门以进行基本设置。有关完整的命令行选项列表,请参阅命令行界面。
Nodemon 提供了一个强大的分层配置系统,允许您在多个级别上自定义行为。
来源: lib/config/exec.js15-33 lib/config/exec.js71-234
配置按以下优先级(从高到低)处理:
nodemon.jsonnodemon.json您可以使用 --config <file> 指定替代配置文件
典型的 nodemon.json 文件可能包括:
来源: README.md74-118
您也可以在 package.json 文件中定义 nodemon 配置
这种方法将您的所有项目配置保存在一个文件中。但是请注意,如果您指定了 --config 文件或提供了本地 nodemon.json,则任何 package.json 配置都将被忽略。
来源: README.md101-118
虽然 nodemon 最初是为 Node.js 应用程序设计的,但它几乎可以监控和重启任何类型的可执行文件或脚本。
来源: lib/config/exec.js71-164 test/cli/exec.test.js62-89 README.md130-142
对于默认不处理的脚本类型,请使用 --exec 标志
这会指示 nodemon 使用指定的执行器运行脚本,并监控 .py 文件的更改。
来源: README.md134-138
execMap 配置允许您为文件扩展名定义默认的可执行文件
此配置告诉 nodemon 在运行 .py 文件时使用 python,而无需每次都使用 --exec 标志。
您也可以使用模板变量
可用的模板变量有:
{{filename}}: 正在运行的脚本名称{{pwd}}: 当前工作目录来源: lib/config/exec.js34-40 lib/config/exec.js144-163 test/cli/exec.test.js127-146 README.md142-160
Nodemon 提供对监控哪些文件以及如何响应更改的细粒度控制。
默认情况下,nodemon 监控当前工作目录。要指定目录:
或者在您的配置文件中:
Nodemon 会自动遍历子目录,因此您无需明确包含它们。
来源: README.md162-172
默认情况下,nodemon 监视 .js、.mjs、.coffee、.litcoffee 和 .json 文件的更改。要指定不同的扩展名:
或者在配置中:
文件扩展名检测是自动的——如果您运行 nodemon app.py,它将默认监控 .py 文件。
来源: lib/config/exec.js116-122 lib/config/exec.js207-216 test/cli/exec.test.js205-218 README.md174-183
为了防止 nodemon 在某些文件或目录更改时重启:
或者特定文件:
您可以使用 glob 模式(但请务必加引号):
默认情况下,nodemon 忽略 .git、node_modules、bower_components、.nyc_output、coverage 和 .sass-cache 目录。
| 模式类型 | 示例 | 备注 |
|---|---|---|
| 目录 | --ignore lib/ | 忽略整个目录 |
| 文件 | --ignore lib/app.js | 忽略特定文件 |
| Glob | --ignore '*.test.js' | 忽略匹配的文件 |
| 复杂 | --ignore '**/test/**' | 使用完整路径 |
重要提示:忽略规则是根据完整的绝对路径进行匹配的。使用通配符 glob 模式时,请使用 **/ 格式而非 */。
来源: README.md185-208
Nodemon 提供高级选项来控制进程的启动、重启和关闭。
来源: README.md257-304
当同时进行多个文件更改时,您可能希望延迟重启以避免过多的重启:
为了更精确,可以指定毫秒:
或者:
延迟是指在最后一次文件更改后等待的秒数(或毫秒数),然后才重启。
在 nodemon.json 中,该值始终被解释为毫秒:
来源: README.md222-254
您可以指定 nodemon 在重启时发送给应用程序的信号:
您的应用程序随后可以处理此信号以执行清理工作:
对于使用 Node.js cluster 的应用程序,您需要同时在主进程和工作进程中处理信号:
来源: README.md256-286
Nodemon 在检测到文件更改时会向您的应用程序发送一个终止信号。要自行处理清理工作:
请注意,process.kill 仅在您的关闭任务完成后才会被调用。
来源: README.md289-304
Nodemon 使用事件驱动架构,您可以接入该架构以实现自定义行为。
来源: README.md306-320
您可以配置在特定事件发生时执行的操作:
例如,在 macOS 上当 nodemon 重启时触发通知:
所有可用事件的完整列表可在 Events wiki
来源: README.md306-320
Nodemon 可以通过将其作为模块引入,在您的 JavaScript 代码中进行编程使用。
有关如何以编程方式使用 nodemon 的详细文档,请参阅编程 API。
来源: README.md122-124
您可以捕获和重定向应用程序的输出:
此方法对于日志记录或处理应用程序输出非常有用。
来源: README.md322-332
Nodemon 与流行的构建工具和任务运行器良好集成。
通过 gulp-nodemon 插件:
来源: README.md334-337
通过 grunt-nodemon 插件:
来源: README.md339-342
在某些网络环境(如容器或挂载驱动器)中,标准的文件监控可能无法可靠工作。请使用旧版监控模式:
或者在配置中:
这会启用基于轮询的文件监控,它在某些环境中更可靠,但会消耗更多资源。
来源: README.md210-221
Nodemon 会自动根据平台调整可执行文件。例如,在 Windows 上使用 CoffeeScript 时:
在 Docker 中运行 nodemon 时,您通常需要旧版监控模式:
此配置确保 nodemon 在容器中的文件系统上正常工作。
当 nodemon 运行时,您可以通过输入 rs 并按 Enter 键来手动重启应用程序。当您需要在不更改任何文件的情况下重启时,这很有用。
来源: README.md70-73
Nodemon 会在未指定文件扩展名时自动尝试查找正确的文件扩展名:
config/exec.js 中的 expandScript 函数处理此功能:
来源: lib/config/exec.js42-59 test/cli/exec.test.js34-47 test/cli/exec.test.js220-240
本概述演示了 nodemon 的高级功能,允许您为复杂的开发工作流自定义其行为。有关特定主题的更详细信息,请参阅自定义配置、编程 API 或扩展 Nodemon。