Table of Contents
URL: https://www.progressiverobot.com/workflow-nodemon-ru/
Введение
В Node.js для вступления изменений в силу необходимо перезапустить процесс. Это добавляет в рабочий процесс дополнительный шаг, необходимый для внесения изменений. Вы можете устранить этот дополнительный шаг, используя nodemon для автоматического перезапуска процесса.
Из этой статьи вы узнаете об установке и настройке nodemon.
Предварительные требования
Если вы захотите следовать за этой статьей, вам потребуется следующее:
- Локальная установка Node.js, выполненная согласно указаниям учебного модуля Установка Node.js и создание локальной среды разработки.
Шаг 1 — Установка 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 напрямую из командной строки:
[secondary_label Output]
command not found: nodemon
Однако вы также можете использовать его как часть некоторых скриптов npm или с npx.
На этом процесс установки nodemon завершен. Далее мы будем использовать nodemon с нашими проектами.
Шаг 2 — Настройка образца проекта Example 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<^>
Мы видим следующий вывод на терминале:
[secondary_label 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}!.
Мы увидим следующий дополнительный вывод на терминале:
[secondary_label 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 вашего проекта:
[label package.json]
{
// ...
<^>"main":<^> "server.js",
// ...
}
Или скрипт start:
[label package.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:
[label nodemon.json]
{
"watch": ["server"],
"ext": "ts",
"ignore": ["*.test.ts"],
"delay": "3",
"execMap": {
"ts": "ts-node"
}
}
Обратите внимание, что execMap используется вместо оператора --exec. execMap позволяет задавать двоичный код, который следует использовать для определенных расширений файлов.
Если вы предпочитаете не добавлять в проект файл конфигурации nodemon.json, вы можете добавить эти конфигурации в файл package.json в ключ nodemonConfig:
[label package.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 подбирает конфигурации и использует их. Это позволяет сохранять конфигурации, делиться ими и воспроизводить их, чтобы избежать ошибок при копировании и вставке или ошибок ввода в командной строке.
Заключение
В этой статье мы рассмотрели использование nodemon с приложениями Node.js. Этот инструмент поможет автоматизировать процесс остановки и запуска сервера Node для просмотра изменений.
Дополнительную информацию о доступных характеристиках и ошибках при диагностике и устранении неисправностей можно найти в официальной документации.
Если вы хотите узнать больше о Node.js, на странице темы Node.js вы найдете упражнения и проекты программирования.