介绍
在 Node.js 中,您需要重新启动进程以使更改生效。这为您的工作流程增加了一个额外的步骤来进行更改。您可以通过使用nodemon
自动重新启动该过程来消除此额外步骤。
nodemon
是由@rem开发的命令行界面 (CLI) 实用程序,用于包装您的 Node 应用程序、监视文件系统并自动重新启动进程。
在本文中,您将了解安装、设置和配置nodemon
.
先决条件
如果你想跟随这篇文章,你需要:
- Node.js 安装在本地,您可以按照如何安装 Node.js 和创建本地开发环境来完成。
步骤 1 — 安装 nodemon
首先,您需要nodemon
在您的机器上安装。使用npm 或 Yarn在您的项目中全局或本地安装该实用程序:
全球安装
您可以nodemon
使用npm
以下命令全局安装:
- npm install nodemon -g
或使用纱线:
- yarn global add nodemon
本地安装
您也可以nodemon
使用 npm 在本地安装。执行本地安装时,我们可以使用(或)nodemon
作为开发依赖项安装:--save-dev
--dev
- npm install nodemon --save-dev
或使用纱线:
- yarn add nodemon --dev
本地安装需要注意的一件事是您将无法nodemon
直接从命令行使用该命令:
Output- command not found: nodemon
但是,您可以将其用作某些npm 脚本的一部分或与npx一起使用。
nodemon
安装过程到此结束。接下来,我们将nodemon
与我们的项目一起使用。
第 2 步 — 设置一个示例 Express 项目 nodemon
我们可以用它nodemon
来启动一个 Node 脚本。例如,如果我们在一个文件中有一个Express 服务器设置server.js
,我们可以启动它并观察这样的变化:
- nodemon server.js
您可以像使用 Node 运行脚本一样传递参数:
- nodemon server.js 3006
您更改到一个文件中使用默认观看扩展(一个每次.js
,.mjs
,.json
,.coffee
,或者.litcoffee
在当前目录或子目录),该进程将重新启动。
假设我们编写了一个server.js
输出消息的示例文件:Dolphin app listening on port ${port}!
.
我们可以使用以下命令运行示例nodemon
:
- nodemon server.js
我们看到以下终端输出:
Output[nodemon] 1.17.3
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node server.js`
Dolphin app listening on port 3000!
在nodemon
仍在运行时,让我们对server.js
文件进行更改以输出消息:Shark app listening on port ${port}!
.
我们看到以下额外的终端输出:
Output[nodemon] restarting due to changes...
[nodemon] starting `node server.js`
Shark app listening on port 3000!
我们的 Node.js 应用程序的终端输出按预期显示。您可以随时通过键入rs
并点击来重新启动该过程ENTER
。
或者,nodemon
还将查找main
在您的项目文件中指定的package.json
文件:
{
// ...
"main": "server.js",
// ...
}
或者,一个start
脚本:
{
// ...
"scripts": {
"start": "node server.js"
},
// ...
}
对 进行更改后package.json
,您可以调用nodemon
以在监视模式下启动示例应用程序,而无需传入server.js
。
第 3 步 – 使用选项
您可以修改可用于 的配置设置nodemon
。
让我们来看看几个主要选项:
--exec
:使用--exec
开关指定一个二进制文件来执行文件。例如,当与ts-node
二进制文件结合使用时,--exec
可以用来观察更改和运行 TypeScript 文件。--ext
:指定要观看的不同文件扩展名。对于此开关,请提供以逗号分隔的文件扩展名列表(例如,--ext js,ts
)。--delay
: 默认情况下,nodemon
当文件更改时等待一秒钟重新启动进程,但使用--delay
开关,您可以指定不同的延迟。例如,nodemon --delay 3.2
对于 3.2 秒的延迟。--watch
: 使用--watch
开关指定要观看的多个目录或文件。--watch
为您要观看的每个目录添加一个开关。默认情况下,会监视当前目录及其子目录,因此--watch
您可以将其范围缩小到仅特定的子目录或文件。--ignore
:使用--ignore
开关忽略某些文件、文件模式或目录。--verbose
:更详细的输出,其中包含有关哪些文件更改以触发重新启动的信息。
您可以使用以下命令查看所有可用选项:
- nodemon --help
使用这些选项,让我们创建满足以下场景的命令:
- 看
server
目录 - 指定带有
.ts
扩展名的文件 - 忽略带有
.test.ts
后缀的文件 - 执行文件 (
server/server.ts
)ts-node
- 文件更改后等待三秒钟重新启动
- nodemon --watch server --ext ts --exec ts-node --ignore '*.test.ts' --delay 3 server/server.ts
此命令结合了--watch
、--ext
、--exec
、--ignore
和--delay
选项以满足我们场景的条件。
第 4 步 – 使用配置
在前面的示例中,在运行时添加配置开关nodemon
会变得非常乏味。对于需要特定配置的项目,更好的解决方案是在nodemon.json
文件中指定这些配置。
例如,这里的配置与前面的命令行示例相同,但放在一个nodemon.json
文件中:
{
"watch": ["server"],
"ext": "ts",
"ignore": ["*.test.ts"],
"delay": "3",
"execMap": {
"ts": "ts-node"
}
}
注意使用execMap
而不是--exec
开关。execMap
允许您指定在给定某些文件扩展名的情况下应该使用的二进制文件。
或者,如果您不想将nodemon.json
配置文件添加到您的项目中,您可以将这些配置添加到package.json
一个nodemonConfig
键下的文件中:
{
"name": "test-nodemon",
"version": "1.0.0",
"description": "",
"nodemonConfig": {
"watch": [
"server"
],
"ext": "ts",
"ignore": [
"*.test.ts"
],
"delay": "3",
"execMap": {
"ts": "ts-node"
}
},
// ...
对nodemon.json
或进行更改后package.json
,您就可以从nodemon
所需的脚本开始:
- nodemon server/server.ts
nodemon
将获取配置并使用它们。这样,您的配置可以被保存、共享和重复,以避免在命令行中复制和粘贴或键入错误。
结论
在本文中,您探索了如何使用nodemon
Node.js 应用程序。此工具有助于自动停止和启动 Node 服务器以查看更改的过程。
有关可用功能和故障排除的更多信息,请参阅官方文档。
如果您想了解有关 Node.js 的更多信息,请查看我们的 Node.js 主题页面以获取练习和编程项目。