本文档描述了如何在其他 Node.js 应用程序中以编程方式将 nodemon 用作库,而不是作为命令行工具。有关从命令行使用 nodemon 的信息,请参阅命令行接口。
Nodemon 的编程 API 允许您将其文件监控和进程管理功能集成到您自己的 Node.js 应用程序中。这使您能够创建自定义开发工具、测试运行器或任何需要监控文件并响应更改的应用程序。
来源:lib/nodemon.js24-251 lib/monitor/index.js1-5
要以编程方式使用 nodemon,首先需要引入(require)该模块,然后使用配置选项调用它。
来源:lib/nodemon.js24-251 lib/nodemon.js253-315
主函数 nodemon(settings) 接受以下任一参数:
此函数返回 nodemon 实例,允许进行方法链式调用。
主函数返回的 nodemon 实例公开了以下方法:
| 方法 | 描述 |
|---|---|
restart() | 手动触发受监控应用程序的重启 |
on(event, handler) | 注册事件监听器 |
once(event, handler) | 注册一次性事件监听器 |
emit(event, [...args]) | 通过内部事件总线发出事件 |
removeAllListeners([event]) | 移除所有监听器或特定事件的所有监听器 |
reset(done) | 重置 nodemon 的内部状态 |
| 属性 | 描述 |
|---|---|
config | 提供对完整配置对象的访问 |
stdout | 捕获受监控应用程序标准输出的流(启用时) |
stderr | 捕获受监控应用程序标准错误的流(启用时) |
来源:lib/nodemon.js314-315 lib/nodemon.js224-231
当使用对象调用主 nodemon() 函数时,您可以提供以下配置选项:
| 选项 | 类型 | 描述 |
|---|---|---|
script | 字符串 | 要运行和监控的主脚本 |
exec | 字符串 | 运行脚本的可执行文件(默认为 'node') |
watch | 数组 | 要监控更改的目录或文件 |
ignore | 数组 | 监控更改时要忽略的模式 |
ext | 字符串 | 逗号分隔的文件扩展名列表,用于监控 |
env | 对象 | 要传递给脚本的环境变量 |
verbose | 布尔值 | 是否输出详细日志 |
stdin | 布尔值 | nodemon 是否应附加到标准输入 (stdin) |
stdout | 布尔值 | nodemon 是否应捕获标准输出 (stdout)(false 启用编程访问) |
signal | 字符串 | 用于重启应用程序的信号(默认值:'SIGUSR2') |
events | 对象 | 在 nodemon 事件上运行的自定义脚本 |
restartable | 字符串 | 启用 stdin 时手动触发重启的按键序列 |
Nodemon 的编程 API 建立在事件驱动架构之上。您可以订阅这些事件以响应应用程序生命周期中的更改。
来源:lib/nodemon.js259-280 test/lib/require.test.js87-103
| 事件 | 描述 | 参数 |
|---|---|---|
start | 应用程序启动时发出 | - |
restart | 应用程序重启时发出 | 触发重启的文件数组 |
crash | 应用程序崩溃时发出 | - |
exit | 应用程序退出时发出 | - |
quit | nodemon 即将退出时发出 | - |
log | nodemon 记录日志时发出 | 包含日志消息的对象 |
config:update | 配置更新时发出 | - |
stdout | 在标准输出 (stdout) 上接收到数据时发出 | 数据缓冲区 |
stderr | 在标准错误 (stderr) 上接收到数据时发出 | 数据缓冲区 |
readable | 当 stdout/stderr 流可用时发出 | - |
通过将 stdout 选项设置为 false 并监听相应的事件,您可以访问子进程的标准 I/O 流。
您可以使用 watch 和 ignore 选项指定自定义文件监控规则。
来源:lib/rules/add.js15-89 lib/nodemon.js170-189
您可以将自定义处理程序附加到应用程序生命周期中的各种事件。
来源:lib/nodemon.js259-275 test/lib/require.test.js51-83
您可以编程方式触发重启。
来源:lib/nodemon.js253-257 test/lib/require.test.js87-103
Nodemon 可以与构建工具集成,以创建自定义开发工作流程。
来源:lib/nodemon.js24-251 lib/nodemon.js253-257
来源:lib/nodemon.js24-251 lib/monitor/index.js1-5
以编程方式使用 nodemon 时,它遵循以下一般流程:
nodemon() 函数| 功能 | CLI 使用 | 编程 API |
|---|---|---|
| 配置 | 通过命令行标志、nodemon.json | 通过对象参数 |
| 事件处理 | 有限(信号、控制台) | 全面的事件系统 |
| I/O 访问 | 通过控制台 | 通过流进行编程访问 |
| 集成 | 独立使用 | 可集成到其他工具中 |
| 控制 | 限于通过配置的键进行重启 | 完全编程控制 |
来源:lib/nodemon.js24-251 lib/nodemon.js259-280
链式方法调用以创建可读配置
当您需要清理资源时,请使用 reset 方法
控制标准输出/标准错误以与其他日志系统集成
来源:lib/nodemon.js224-231 lib/nodemon.js296-298 test/lib/require.test.js25-26