Введение
В Node.js для вступления изменений в силу необходимо перезапустить процесс. Это добавляет один дополнительный шаг в рабочий процесс. Вы можете избежать этого, используя nodemon для автоматического перезапуска процесса.
nodemon — это инструмент командной строки (CLI), разработанный компанией rem, который упаковывает ваше Node-приложение, отслеживает файловую систему и автоматически перезапускает процесс. В этой статье вы узнаете, как установить, настроить и сконфигурировать nodemon.
Предпосылки
- Node.js установлен
Шаг 1 — Установка nodemon
Сначала вам нужно установить nodemon на свой компьютер. Вы можете установить его глобально или локально в вашем проекте, используя нпм Или пряжа Установить.
Вы можете запустить nodemon глобально с помощью нпм Установить:
npm install nodemon --globalИли с пряжа:
yarn global add nodemonВы также можете установить nodemon локально. При локальной установке вы можете установить nodemon как зависимость разработчика с помощью параметра --save-dev (или --dev).
Установите Nodemon локально с помощью нпм Установить:
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 — Настройка примера проекта Express с помощью nodemon
Вы можете использовать nodemon для запуска скрипта Node. Например, если у вас есть сервер Express в файле сервер.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 показывает новые изменения.
Вы можете печатать в любое время рс и ударяя ВХОДИТЬПерезапустите процесс.
С другой стороны, 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
- Запуск файла (server/server.ts) с помощью ts-node
- Подождите три секунды, чтобы перезагрузиться после изменения файла.
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 может быть утомительным. Для проектов, требующих сложной настройки, лучшим решением будет определить эти параметры в файле 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.tsnodemon подхватывает настройки и использует их. Таким образом, ваши настройки можно сохранять, распространять и реплицировать, избегая ошибок копирования и ввода в командной строке.
Результат
В этой статье вы узнали, как использовать nodemon с приложениями Node.js. Этот инструмент помогает автоматизировать процесс остановки и запуска Node-сервера для просмотра изменений.









