В Node.js для вступления изменений в силу необходимо перезапустить процесс. Это добавляет в рабочий процесс дополнительный шаг, необходимый для внесения изменений. Вы можете устранить этот дополнительный шаг, используя nodemon
для автоматического перезапуска процесса.
nodemon
— это утилита командной строки, разработанная @rem. Она заключает в оболочку ваше приложение Node, наблюдает за файловой системой и автоматически перезапускает процесс.
Из этой статьи вы узнаете об установке и настройке nodemon
.
Если вы захотите следовать за этой статьей, вам потребуется следующее:
nodemon
Вначале вам нужно будет установить nodemon
на вашем компьютере. Установите утилиту в проекте глобально или локально, используя npm или Yarn:
Вы можете установить nodemon
глобально с помощью npm
:
- npm install nodemon -g
Или с помощью Yarn:
- yarn global add nodemon
Также вы можете установить nodemon
локально с помощью npm. При локальной установке мы можем установить nodemon
как зависимость dev с помощью --save-dev
(или --dev
):
- npm install nodemon --save-dev
Или с помощью Yarn:
- yarn add nodemon --dev
При локальной установке нужно знать, сможете ли вы использовать команду nodemon
напрямую из командной строки:
- Outputcommand not found: nodemon
Однако вы также можете использовать его как часть некоторых скриптов npm или с npx.
На этом процесс установки nodemon
завершен. Далее мы будем использовать nodemon
с нашими проектами.
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
.
Вы можете изменить параметры конфигурации, доступные 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
, чтобы выполнить условия для нашего сценария.
В предыдущем примере добавление параметров конфигурации при выполнении 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 вы найдете упражнения и проекты программирования.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Sign up for Infrastructure as a Newsletter.
Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.