Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.
Кратко о задаче
Понадобится локальная машина или виртуальный сервер VPS/VDS, подходящий по техническим характеристикам. Они включают минимум процессор с тактовой частотой 1 ГГц, ОЗУ от 512 мегабайт, свободное пространство на накопителе от 15 мегабайт. Также нужно произвести**** установку Node.js по инструкции из официальной документации, создать среду разработчика (а это уже тема для отдельной статьи).
Шаг 1. Инсталляция утилиты nodemon
Первым этапом всегда идет установки утилиты на рабочем или виртуальном компьютере. Есть два варианта – глобальная и локальная инсталляция. Выполнить процедуру можно через npm или yarn.
Установка в глобальном режиме
Выполним команду через npm:
Установка в локальном режиме
При локальной инсталляции допустимо задавать зависимость dev:
npm install nodemon --save-devПри помощи yarn команда будет выглядеть так:
Процедура установки завершена, можно приступать к дальнейшей работе.
Шаг 2. Настройка проекта Node.js через nodemon
С практической стороны интересна возможность старта скриптов**** Node с nodemon. Возьмем пример: в наличии есть файл для задания параметров, сохраненный под именем serv.js. Введем команду и понаблюдаем за происходящими корректировками:
При запуске допускается передавать аргументы в том же порядке, как будто скрипт запускается при помощи Node:
Процесс перезапустится после каждой корректировки файлов. Речь идет только об отслеживаемых расширениях (.js, .mjs, .json, .coffee, .litcofee) и текущей папке. В качестве примера возьмем все тот же файл serv.js и внесем в него команду на вывод сообщения:
Dolphin app listening on port ${port}.На экран будет выведено сообщение:
[nodemon] 2.0.15
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node serv.js`
Dolphin app listening on port 3000!Пока утилита функционирует, сделаем корректировки в файле serv.js. Например, чтобы скрипт вывел сообщение Shark app listening on port ${port}. Информация на экране обновится, мы увидим:
[nodemon] restarting due to changes...
[nodemon] starting `node server.js`
Shark app listening on port 3000!Как и планировалось, идет вывод о произведенных изменениях. Рестарт процесса возможен по желанию пользователя – достаточно набрать команду rs и кликнуть Enter.
Конфигурация утилиты nodemon управляется путем применения различных опций, вводимых в командной строке. Рассмотрим часть из них, которые встречаются чаще остальных:
--exec– задает двоичный код, считываемый при выполнении файлов. Так, в случае указанияts-nodeутилита будет наблюдать за запуском TypeScript, происходящими в нем изменениями.--ext– опция указывает утилитеnodemon, какие расширения будут подпадать под функцию наблюдения. Вносить перечень следует через запятую. Например, js, ts.--delay– устанавливает время до перезапуска процесса после фиксации изменений в файле. По умолчанию это значение равно одной секунде. Новое требуется указывать в цифровом виде, например 3.1.--watch– позволяет задать наблюдение за несколькими файлами или директориями. Опцию используют отдельно для каждого объекта. По умолчанию утилита мониторит текущую папку и вложенные в нее каталоги. При помощиwatchможно как расширить сферу работыnodemon, так и сузить сектор наблюдения, отключив часть вложенных папок или файлов, расположенных в них.--ignore– аналогично предыдущей опции, предназначена для принудительного отключения наблюдения за указанными файлами, папками или шаблонами.--verbose– дает подробное информирование об измененных файлах, процедуре рестарта процесса.
Полный перечень опций доступен по команде:
Приведем пример их комбинированного использования. Предположим, что необходимо включить мониторинг файлов с расширением .ts в каталоге server, при этом пропускать файлы с суффиксом .test.ts и ждать рестарта в течение 3-х секунд после фиксации факта сохранения изменений. А также при запуске применять двоичный код ts-node.
Команда будет выглядеть так:
nodemon --watch server --ext ts --exec ts-node --ignore '*.test.ts' --delay 3 server/server.tsЗдесь одновременно используются опции --watch, --ext, --exec, --ignore и --delay.
Шаг 4. Применение конфигураций
Если думать о том, как упростить работу с Node.js, стоит настроить и параметры конфигурации. Например, задать перечень нужных опций в nodemon.json. Тогда появится возможность пакетного старта утилиты. Пример такого файла:
{
"watch": ["server"],
"ext": "ts",
"ignore": ["*.test.ts"],
"delay": "3",
"execMap": {
"ts": "ts-node"
}
}Здесь execMap заменяет оператор exec. Он разрешает указывать двоичный код, подключаемый при обработке указанных расширений файлов.
Есть другой вариант добавления конфигурации – скорректировать файл 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 можно запускать утилиту при помощи скрипта:
Приложение подхватит конфигурацию и начнет работать в соответствии с заданными параметрами. Такой подход позволяет быстро настраивать новые системы и передавать настройки другим, чтобы не тратить время на синхронизацию командных компьютеров.
Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.