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

介绍

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

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

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

先决条件

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

步骤 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文件:

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

或者,一个start脚本:

包.json
{
  // ...
  "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文件中:

nodemon.json
{
  "watch": ["server"],
  "ext": "ts",
  "ignore": ["*.test.ts"],
  "delay": "3",
  "execMap": {
    "ts": "ts-node"
  }
}

注意使用execMap而不是--exec开关。execMap允许您指定在给定某些文件扩展名的情况下应该使用的二进制文件。

或者,如果您不想将nodemon.json配置文件添加到您的项目中,您可以将这些配置添加到package.json一个nodemonConfig文件中

包.json
{
  "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将获取配置并使用它们。这样,您的配置可以被保存、共享和重复,以避免在命令行中复制和粘贴或键入错误。

结论

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

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

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

觉得文章有用?

点个广告表达一下你的爱意吧 !😁