介绍
在 Node.js 中,您需要重新启动过程以使更改生效. 这将为工作流增加一个额外的步骤. 您可以使用 nodemon
来自动重新启动该过程来消除此额外的步骤。
nodemon
是一个由 @rem开发的命令行界面(CLI)实用程序,可包装您的Node应用程序,监控文件系统,并自动重新启动过程。
在本文中,您将了解如何安装、设置和配置nodemon
。
前提条件
如果您想跟随这篇文章,您将需要:
- Node.js 是本地安装的,您可以按照 如何安装 Node.js 和创建本地开发环境进行操作。
本教程已通过 Node.js v17.1.0、npm v8.1.2、nodemon v2.0.15 和 express v4.17.1 进行验证。
步骤 1 – 安装nodemon
首先,您需要在您的计算机上安装nodemon
。在您的项目上使用npm
或yarn
(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]
这结束了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.json
或package.json
进行更改,您可以使用所需的脚本开始nodemon
:
1nodemon server/server.ts
nodemon
会收集配置并使用它们,这样,您的配置可以保存、共享和重复,以避免在命令行中复制或键入错误。
结论
在本文中,您探讨了如何在 Node.js 应用程序中使用nodemon
这个工具有助于自动化停止和启动 Node 服务器以查看更改的过程。
有关可用的功能和故障排除错误的更多信息,请参阅 官方文档。
如果您想了解有关 Node.js 的更多信息,请参阅 我们的 Node.js 主题页面以获取练习和编程项目。