如何使用 nodemon 自动重启 Node.js 应用程序

介绍

在 Node.js 中,您需要重新启动过程以使更改生效. 这将为工作流增加一个额外的步骤. 您可以使用 nodemon来自动重新启动该过程来消除此额外的步骤。

nodemon是一个由 @rem开发的命令行界面(CLI)实用程序,可包装您的Node应用程序,监控文件系统,并自动重新启动过程。

在本文中,您将了解如何安装、设置和配置nodemon

前提条件

如果您想跟随这篇文章,您将需要:

本教程已通过 Node.js v17.1.0、npm v8.1.2、nodemon v2.0.15 和 express v4.17.1 进行验证。

步骤 1 – 安装nodemon

首先,您需要在您的计算机上安装nodemon。在您的项目上使用npmyarn(https://andsky.com/tech/tutorials/nodejs-adding-removing-packages-npm-yarn)在全球或本地安装实用程序:

全球安装

您可以通过npm在全球范围内安装nodemon:

1npm install nodemon --global

或者说``:

1yarn global add nodemon

局部安装

當執行本地安裝時,您可以安裝「nodemon」作為一個 dev 依賴--save-dev' (或 --dev')。

npm本地安装到nodemon:

1npm install nodemon --save-dev

或者说``:

1yarn add nodemon --dev

在本地安装时要注意的一点是,您将无法直接使用nodemon命令:

1[secondary_label Output]
2command not found: nodemon

您可以执行本地安装的包:

1./node_modules/nodemon/bin/nodemon.js [your node app]

你也可以使用它在 npm 脚本npx中。

这结束了nodemon安装过程。

步骤 2 — 设置一个示例快递项目与nodemon

例如,如果您在server.js文件中有 Express server setup,则可以启动nodemon并观察如下变化:

1nodemon server.js

您可以以相同的方式传输参数,就像您在使用 Node 运行脚本一样:

1nodemon server.js 3006

每当您对当前目录或子目录中的默认观看扩展(.js, .mjs, .json, .coffee.litcoffee)进行更改时,该过程将重新启动。

让我们写一个例子 server.js 文件,输出消息: Dolphin app listening on port ${port}!

1[label server.js]
2const express = require('express')
3const app = express()
4const port = 3000
5
6app.listen(port, ()=> console.log(`Dolphin app listening on port ${port}!`))

运行nodemon的例子:

1nodemon server.js

终端输出将显示:

1[secondary_label Output]
2[nodemon] 2.0.15
3[nodemon] to restart at any time, enter `rs`
4[nodemon] watching path(s): *.*
5[nodemon] watching extensions: js,mjs,json
6[nodemon] starting `node server.js`
7Dolphin app listening on port 3000!

當「nodemon」仍在運行時,讓我們改變「server.js」檔案. 將輸出變更為另一個訊息:「Shark app listening on port ${port}!」。

终端输出将显示:

1[secondary_label Output]
2[nodemon] restarting due to changes...
3[nodemon] starting `node server.js`
4Shark app listening on port 3000!

Node.js 应用程序的终端输出显示了新的更改。

您可以随时重新启动过程,键入rs并点击ENTER

或者,nodemon还会搜索项目的package.json文件中指定的文件:

1[label package.json]
2{
3  // ...
4  "main": "server.js",
5  // ...
6}

如果未指定主要文件,则nodemon会搜索开始脚本:

1[label package.json]
2{
3  // ...
4  "scripts": {
5    "start": "node server.js"
6  },
7  // ...
8}

一旦您对package.json进行更改,您可以拨打nodemon以在观看模式下启动示例应用,而无需输入server.js

步骤 3 – 使用选项

您可以更改可用于nodemon的配置设置。

让我们来看看一些主要选项:

-执行':使用-执行'开关指定一个二进制执行文件。 例如,如果与[ts-node' (https://github.com/TypeStrong/ts-node) 二进制组合起来,-exec'就可以成为监视更改和运行TypeScript文件的有用工具. (_) ( ) -ext':指定不同的文件扩展名以观看。 对于此开关, 提供一个逗号分隔的文件扩展名列表( 例如 - ext js, ts' )

  • --延迟':默认情况下,nodemon'在文件更改时等待一秒钟重启进程,但使用--延迟'开关,您可以指定不同的延迟。 例如,nodemon-delay 3.2'延迟3.2秒。 (_) ( )* -- -- 观察 ' : 使用 " -- watch " 开关指定要观看的多个目录或文件。 为您想要观看的每个目录添加一个-watch开关。 默认情况下,当前目录及其子目录会被监视,所以用"-watch"可以将它缩小到仅特定子目录或文件. (_) ( )* -- -- 无知 ' : 使用 - ignore' 开关忽略某些文件、 文件模式或目录 。 (_) ( )* --动词': 更动词的输出,其中包含关于哪些文件更改以触发重新启动的信息( _) (英语)

您可以使用以下命令查看所有可用的选项:

1nodemon --help

使用这些选项,让我们创建命令以满足下面的场景:

观看服务器目录 *指定具有.ts扩展的文件 *忽略具有.test.ts补丁的文件 *执行文件(server/server.ts)使用`ts-node’ *等待三秒钟在文件更改后重新启动

1nodemon --watch server --ext ts --exec ts-node --ignore '*.test.ts' --delay 3 server/server.ts

终端输出将显示:

1[secondary_label Output]
2[nodemon] 2.0.15
3[nodemon] to restart at any time, enter `rs`
4[nodemon] watching path(s): server
5[nodemon] watching extensions: ts
6[nodemon] starting `ts-node server/server.ts`

此命令结合了观看,灭绝,执行,忽略延迟选项,以满足我们场景的条件。

步骤 4 – 使用配置

在上面的例子中,在运行nodemon时添加配置交换机可能会变得无聊。对于需要复杂配置的项目,更好的解决方案是在nodemon.json文件中定义这些选项。

例如,以下是与上一个命令行示例相同的配置,但放置在nodemon.json文件中:

 1[label nodemon.json]
 2{
 3  "watch": [
 4    "server"
 5  ],
 6  "ext": "ts",
 7  "ignore": [
 8    "*.test.ts"
 9  ],
10  "delay": "3",
11  "execMap": {
12    "ts": "ts-node"
13  }
14}

注意使用execMap而不是--exec交换机。execMap允许您为某些文件扩展指定二进制。

或者,如果您不希望将nodemon.json配置文件添加到您的项目中,则可以在nodemonConfig键下将这些配置添加到package.json文件中:

 1[label package.json]
 2{
 3  "name": "nodemon-example",
 4  "version": "1.0.0",
 5  "description": "",
 6  "nodemonConfig": {
 7    "watch": [
 8      "server"
 9    ],
10    "ext": "ts",
11    "ignore": [
12      "*.test.ts"
13    ],
14    "delay": "3",
15    "execMap": {
16      "ts": "ts-node"
17    }
18  },
19  // ...

一旦您对nodemon.jsonpackage.json进行更改,您可以使用所需的脚本开始nodemon:

1nodemon server/server.ts

nodemon会收集配置并使用它们,这样,您的配置可以保存、共享和重复,以避免在命令行中复制或键入错误。

结论

在本文中,您探讨了如何在 Node.js 应用程序中使用nodemon 这个工具有助于自动化停止和启动 Node 服务器以查看更改的过程。

有关可用的功能和故障排除错误的更多信息,请参阅 官方文档

如果您想了解有关 Node.js 的更多信息,请参阅 我们的 Node.js 主题页面以获取练习和编程项目。

Published At
Categories with 技术
Tagged with
comments powered by Disqus