首页 >web前端 >js教程 >使用nodemon并在node.js中观看实时重新启动

使用nodemon并在node.js中观看实时重新启动

Lisa Kudrow
Lisa Kudrow原创
2025-02-08 10:00:19425浏览

Using Nodemon and Watch in Node.js for Live Restarts

告别Node.js开发中反复重启的繁琐!本文介绍两种方法,助您提升开发效率。

核心要点

  • 使用nodemon高效开发:我们将介绍nodemon,一个第三方Node.js模块,它能有效解决每次代码修改后都需要手动停止并重启Node.js应用的难题。
  • nodemon配置选项:我们将涵盖nodemon的各种配置选项,例如设置要监视的特定路径、忽略特定路径、监视特定文件扩展名、调整重启延迟以及设置环境变量等。
  • Node.js --watch模式(适用于简单应用):对于简单的应用程序,如果您使用的是Node.js 18.11或更高版本,则可以使用Node.js的实验性--watch选项。此内置功能会在任何导入文件更改时重新启动应用程序,提供比nodemon更直接的替代方案,无需额外的第三方模块。但是,它缺乏nodemon中可用的高级控制选项。

如果您有PHP开发经验,您知道可以随时更新代码并刷新浏览器来测试更改。像Apache或NGINX这样的Web服务器会接收您对PHP文件的请求,然后将内容传递给PHP解释器执行代码。服务器将生成的输出(通常是HTML或JSON)返回给调用浏览器。换句话说,代码在每次请求时都会动态运行。

Node.js对于Web应用程序采用不同的方法:您的JavaScript应用程序就是一个Web服务器。运行node index.js会初始化应用程序,加载所有模块并启动一个服务器,该服务器可以响应传入的请求。更改文件不会影响应用程序的输出,因为它已经在内存中运行。要测试更新,您必须使用Ctrl | Cmd C关闭它,然后再次运行node index.js

在调试期间或那些难得的专注工作时间里,Node.js的停止和重启过程会变得非常令人沮丧,尤其是在进行大量更改时。幸运的是,有两种解决方案:

  1. nodemon
  2. Node.js --watch模式

nodemon

nodemon是由JavaScript专家Remy Sharp开发的第三方Node.js模块。(他说你可以随意发音!)

您可以将nodemon安装为全局模块:

<code class="language-bash">npm install -g nodemon</code>

然后在开发启动命令中用nodemon替换node。例如,考虑以下命令:

<code class="language-bash">node --inspect index.js arg1 arg2</code>

上面的命令现在将如下所示:

<code class="language-bash">nodemon --inspect index.js arg1 arg2</code>

您的应用程序将照常启动,但是当您编辑并保存源文件时,它会自动重启。无需按Ctrl | Cmd C并再次运行,尽管您可以键入rs并按Enter强制重启。

注意:nodemon是一个服务器端解决方案,不会刷新您指向应用程序的任何浏览器选项卡。您可以使用Browsersync或esbuild等工具实现实时重新加载。

要获取nodemon帮助,请输入:

<code class="language-bash">npm install -g nodemon</code>

nodemon配置

nodemon有自己的一组命令行参数,这些参数优先于其他地方的配置。您也可以在以下位置定义配置:

  • 项目的package.json文件中的"nodemonConfig"部分
  • 项目目录中的本地nodemon.json配置文件,和/或
  • 运行命令行中的nodemon --config <file></file>时使用的全局nodemon.json配置文件

以下参数/设置常用。

watch

nodemon监视当前工作目录中的JavaScript文件,但您可以使用命令行上的通配符显式设置特定路径:

<code class="language-bash">node --inspect index.js arg1 arg2</code>

或者您可以在nodemon.json配置文件中执行此操作:

<code class="language-bash">nodemon --inspect index.js arg1 arg2</code>

ignore

类似地,您可以选择忽略路径:

<code class="language-bash">nodemon --help</code>

或者您可以在nodemon.json配置文件中执行此操作:

<code class="language-bash">nodemon --watch lib1 config/*.json ./index.js</code>

ext

您可以通过文件的扩展名来监视特定文件。例如,您可以像这样监视js、cjs、mjs、json和njk模板文件:

<code class="language-json">{
  "watch": [
    "lib1",
    "config/*.json"
  ]
}</code>

或者您可以在nodemon.json配置文件中执行此操作:

<code class="language-bash">nodemon --ignore lib2 config/build.json ./index.js</code>

legacyWatch

在某些环境(例如从已挂载驱动器读取文件的Docker容器)中,文件监视可能会失败。切换到旧版监视模式使用轮询来检查文件是否已更改。从命令行:

<code class="language-json">{
  "ignore": [
    "lib2",
    "config/build.json"
  ]
}</code>

或者在nodemon.json配置文件中:

<code class="language-bash">nodemon --ext "js,cjs,mjs,json,njk" ./index.js</code>

delay

nodemon在触发重启之前等待一秒钟。当您通常一次保存许多文件时,这很有用。您可以从命令行更改延迟——例如,更改为五秒钟:

<code class="language-json">{
  "ext": "js,cjs,mjs,json,njk"
}</code>

或者在nodemon.json配置文件中(请注意,此配置使用毫秒而不是秒):

<code class="language-bash">nodemon --legacy-watch ./index.js</code>

verbose

显示详细的输出日志:

<code class="language-json">{
  "legacyWatch": true
}</code>

或者在nodemon.json配置文件中:

<code class="language-bash">nodemon --delay 5 ./index.js</code>

env

设置特定环境变量的nodemon.json配置文件:

<code class="language-json">{
  "delay": 5000
}</code>

其他可执行文件

最后,您可以使用nodemon启动用其他语言编写的应用程序。例如,要启动自动重启的perl脚本:

<code class="language-bash">nodemon --verbose ./index.js</code>

您还可以在nodemon.json配置文件中使用其扩展名定义可执行文件的列表:

<code class="language-json">{
  "verbose": true
}</code>

高级nodemon

如果您需要,nodemon提供更高级的功能:

  • 发送信号以便您可以优雅地处理关机
  • 当nodemon的状态发生变化时触发事件
  • 将输出管道传输到其他进程
  • 将nodemon作为模块加载到您的项目中
  • 将nodemon作为子进程生成,以及
  • 在Gulp和Grunt工作流程中使用nodemon。

Node.js --watch模式

如果您有复杂的应用程序启动要求,nodemon仍然是首选工具。但是,如果您使用的是Node.js 18.11(2022年末发布)或更高版本,它提供了一个实验性的--watch选项来重新启动您的应用程序,而无需安装nodemon或任何其他第三方模块。例如,对于启动命令:

<code class="language-bash">npm install -g nodemon</code>

这将变成:

<code class="language-bash">node --inspect index.js arg1 arg2</code>

当任何导入的文件更改时,Node.js都会重新启动。没有其他控制选项,因此如果它不适合您的项目,请考虑改用nodemon。

总结

随着经验的增长,您会发现自动重启Node.js应用程序越来越有用。请将其视为所有项目中开发工作流程的一部分。

以上是使用nodemon并在node.js中观看实时重新启动的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn