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

0 股票
0
0
0
0

介绍

在 Node.js 中,你需要重启进程才能使更改生效。这会在你的工作流程中增加一个额外的步骤。你可以使用 nodemon 自动重启进程,从而省去这个额外的步骤。.

nodemon 是由 rem 开发的命令行界面 (CLI) 工具,它可以打包你的 Node 应用程序、监视文件系统并自动重启进程。本文将介绍如何安装、设置和配置 nodemon。.

先决条件
  • 已安装 Node.js

步骤 1 – 安装 nodemon

首先,您需要在机器上安装 nodemon。您可以使用以下命令将该工具全局安装,或将其安装到您的项目中。 npm 或者 安装。.

您可以使用以下命令全局启动 nodemon npm 安装:

npm install nodemon --global

或者用 :

yarn global add nodemon

您也可以在本地安装 nodemon。在进行本地安装时,您可以使用 --save-dev(或 --dev)将 nodemon 安装为开发人员依赖项。.

使用以下命令在本地安装 Nodemon npm 安装:

npm install nodemon --save-dev

或者用 :

yarn add nodemon --dev

本地安装需要注意的一点是,您不能直接使用 nodemon 命令:

Outputcommand not found: nodemon

您可以运行本地安装的软件包:

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

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

步骤 2 – 使用 nodemon 设置示例 Express 项目

您可以使用 nodemon 来启动 Node 脚本。例如,如果您在文件中有一个 Express 服务器 server.js 启动,您可以 节点守护进程 启动后即可看到如下变化:

nodemon server.js

你可以像使用 Node 运行脚本一样传递参数:

nodemon server.js 3006

每次对当前目录或子目录中默认扩展名(js、.mjs、.json、.coffee 或 .litcoffee)的文件进行更改时,该过程都会重新开始。.

让我们编写一个示例 server.js 文件,向外发送消息:Dolphin 应用程序正在监听端口 ${port}!.

const express = require('express')
const app = express()
const port = 3000
app.listen(port, ()=> console.log(`Dolphin app listening on port ${port}!`))

使用 nodemon 运行示例:

nodemon server.js

终端输出显示以下内容:

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

在 nodemon 仍在运行的情况下,让我们修改 server.js 文件。将输出更改为另一条消息:Shark 应用程序正在监听端口 ${port}!.

终端输出显示以下内容:

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

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

您可以随时输入 rs 击中 进入重新启动该过程。.

另一方面,nodemon 还会查找项目 package.json 文件中指定的主文件:

{
// ...
"main": "server.js",
// ...
}

如果未指定主文件,nodemon 会查找启动脚本:

{
// ...
"scripts": {
"start": "node server.js"
},
// ...
}

对 package.json 进行更改后,就可以调用 nodemon 以监视模式启动示例应用程序,而无需通过 server.js。.

步骤 3 – nodemon 选项

您可以更改 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

利用这些选项,我们来创建一个命令以满足以下场景:

  • 监视服务器目录
  • 指定扩展名为 .ts 的文件
  • 忽略扩展名为 .test.ts 的文件
  • 使用 ts-node 运行文件 (server/server.ts)。
  • 更改文件后请等待三秒钟再重启
nodemon --watch server --ext ts --exec ts-node --ignore '*.test.ts' --delay 3 server/server.ts

终端输出显示以下内容:

Output
[nodemon] 2.0.15
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): server
[nodemon] watching extensions: ts
[nodemon] starting `ts-node 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": "nodemon-example",
"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 会读取并使用这些设置。这样,您的设置就可以被保存、共享和复制,从而避免在命令行中出现复制粘贴或输入错误。.

结果

本文介绍了如何在 Node.js 应用程序中使用 nodemon。该工具可以帮助自动化停止和启动 Node 服务器的过程,以便查看更改。.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

您可能也喜欢