Nodemon и Watch — это два инструмента Node.js, которые позволяют перезапускать ваше приложение в реальном времени. Узнайте, как использовать их для ускорения процесса разработки.
nodemon — это сторонний модуль Node.js, разработанный гуру JavaScript Реми Шарпом. (Он говорит, что вы можете произносить это слово по своему усмотрению!)
Вы можете установить nodemon как глобальный модуль:
npm install -g nodemon
Затем замените node на nodemon в командах запуска разработки. Например, рассмотрим следующую команду:
node --inspect index.js arg1 arg2
Команда выше теперь будет выглядеть так:
nodemon --inspect index.js arg1 arg2
Ваше приложение запускается как обычно, но автоматически перезапускается при редактировании и сохранении исходного файла. Нет необходимости нажимать Ctrl | Cmd + C и запустите снова, хотя вы можете ввести rs и нажать Enter, чтобы принудительно перезапустить.
Примечание: nodemon — это серверное решение, которое не обновляет вкладки браузера, которые вы указали в своем приложении. Вы можете реализовать живую перезагрузку с помощью таких инструментов, как Browsersync или esbuild.< /а>
Для получения помощи по nodemon введите:
nodemon --help
nodemonимеет свой собственный набор аргументов командной строки, которые имеют приоритет над конфигурацией в другом месте. Вы также можете определить конфигурацию в:
Обычно используются следующие параметры/настройки.
nodemon отслеживает файлы JavaScript в текущем рабочем каталоге, но вы можете явно указать конкретные пути с помощью подстановочных знаков в командной строке:
nodemon --watch lib1 config/*.json ./index.js
Или вы можете сделать это в файле конфигурации nodemon.json:
{
"watch": [
"lib1",
"config/*.json"
]
}
Аналогичным образом вы можете игнорировать пути:
nodemon --ignore lib2 config/build.json ./index.js
Или вы можете сделать это в файле конфигурации nodemon.json:
{
"ignore": [
"lib2",
"config/build.json"
]
}
Вы можете отслеживать отдельные файлы по их расширению. Например, вы можете отслеживать js, cjs, mjs, json и njk файлы шаблонов, например:
nodemon --ext "js,cjs,mjs,json,njk" ./index.js
Или вы можете сделать это в файле конфигурации nodemon.json:
{
"ext": "js,cjs,mjs,json,njk"
}
Наблюдение за файлами может дать сбой в некоторых средах, например, когда контейнеры Docker читают файлы с подключенного диска. При переключении в устаревший режим просмотра используется опрос, чтобы проверить, изменились ли файлы. Из командной строки:
nodemon --legacy-watch ./index.js
Или в файле конфигурации nodemon.json:
{
"legacyWatch": true
}
nodemon ждет одну секунду, прежде чем запустить перезагрузку. Это может быть полезно, если вы обычно сохраняете много файлов одновременно. Вы можете изменить задержку из командной строки — например, до пяти секунд:
nodemon --delay 5 ./index.js
Или в файле конфигурации nodemon.json (обратите внимание, что здесь используются миллисекунды, а не секунды):
{
"delay": 5000
}
Показывает подробные журналы вывода:
nodemon --verbose ./index.js
Или в файле конфигурации nodemon.json:
ОБЪЯВЛЕНИЕ
{
"verbose": true
}
Задает определенные переменные среды в файле конфигурации nodemon.json:
{
"env": {
"NODE_ENV": "development",
"SERVER_PORT": 8000
}
}
Наконец, вы можете запускать приложения, написанные на других языках, с помощью nodemon. Например, чтобы запустить сценарий perl, который перезапускается автоматически:
nodemon --exec "perl" ./app.pl
Вы также можете определить списки исполняемых файлов в файле конфигурации nodemon.json с их расширением:
{
"execMap": {
"pl": "perl"
}
}
nodemon предоставляет более расширенные функциональные возможности, если они вам потребуются:
nodemon остается предпочтительным инструментом, если у вас есть сложные требования к запуску приложения. Однако если вы используете Node.js 18.11 (выпущенный в конце 2022 г.) или новее, он предоставляет экспериментальную опцию --watch для перезапуска приложения без необходимости установки nodemon или любого другого стороннего модуля. Например, для команды запуска:
node --inspect index.js
Это становится:
node --inspect --watch index.js
Node.js перезапускается при изменении любого импортированного файла. Других вариантов управления нет, поэтому, если он не подходит для вашего проекта, рассмотрите возможность использования вместо него nodemon.