菜单

高级用法

相关源文件

本文档涵盖了 nodemon 除了基本文件监控和服务器重启功能之外的高级场景和配置。如果您是 nodemon 的新手,请参阅安装和快速入门以进行基本设置。有关完整的命令行选项列表,请参阅命令行界面

配置系统

Nodemon 提供了一个强大的分层配置系统,允许您在多个级别上自定义行为。

来源: lib/config/exec.js15-33 lib/config/exec.js71-234

配置按以下优先级(从高到低)处理:

  1. 命令行参数
  2. 项目中的本地 nodemon.json
  3. 主目录中的全局 nodemon.json
  4. 默认设置

您可以使用 --config <file> 指定替代配置文件

配置文件结构

典型的 nodemon.json 文件可能包括:

来源: README.md74-118

Package.json 配置

您也可以在 package.json 文件中定义 nodemon 配置

这种方法将您的所有项目配置保存在一个文件中。但是请注意,如果您指定了 --config 文件或提供了本地 nodemon.json,则任何 package.json 配置都将被忽略。

来源: README.md101-118

运行非 Node 应用程序

虽然 nodemon 最初是为 Node.js 应用程序设计的,但它几乎可以监控和重启任何类型的可执行文件或脚本。

来源: lib/config/exec.js71-164 test/cli/exec.test.js62-89 README.md130-142

使用 --exec 标志

对于默认不处理的脚本类型,请使用 --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 忽略 .gitnode_modulesbower_components.nyc_outputcoverage.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

编程 API

Nodemon 可以通过将其作为模块引入,在您的 JavaScript 代码中进行编程使用。

基本 API 用法

有关如何以编程方式使用 nodemon 的详细文档,请参阅编程 API

来源: README.md122-124

重定向输出

您可以捕获和重定向应用程序的输出:

此方法对于日志记录或处理应用程序输出非常有用。

来源: README.md322-332

与构建工具集成

Nodemon 与流行的构建工具和任务运行器良好集成。

Gulp 集成

通过 gulp-nodemon 插件:

来源: README.md334-337

Grunt 集成

通过 grunt-nodemon 插件:

来源: README.md339-342

跨平台考量

旧版监控模式

在某些网络环境(如容器或挂载驱动器)中,标准的文件监控可能无法可靠工作。请使用旧版监控模式:

或者在配置中:

这会启用基于轮询的文件监控,它在某些环境中更可靠,但会消耗更多资源。

来源: README.md210-221

平台特定的可执行文件处理

Nodemon 会自动根据平台调整可执行文件。例如,在 Windows 上使用 CoffeeScript 时:

来源: lib/config/exec.js192-204

Docker 环境

在 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