Nodemon — популярная утилита для Node.js, помогающая упростить процесс разработки и сделать его более эффективным. Nodemon завоевал свою популярность по следующим причинам.

  1. Автоматический перезапуск: Nodemon автоматически перезапускает приложение Node.js всякий раз, когда в код вносятся изменения, экономя время и усилия разработчика.
  2. Улучшенный рабочий процесс: Nodemon устраняет необходимость перезапуска вручную, позволяя разработчикам сосредоточиться на написании и тестировании кода, а не на перезапуске приложения.
  3. Отладка: Nodemon помогает быстро выявлять и устранять проблемы, так как перезапускает приложение сразу после внесения изменений.
  4. Повышение эффективности: Nodemon может значительно сократить время, необходимое для разработки и тестирования приложения Node.js.

Как и в случае с Nodemon, существуют более продвинутые инструменты, такие как Supervisor и PM2, которые способны автоматически перезапускать приложения Node.js при ошибках. Но с Node.js 18.11.0 и последними версиями вы можете заменить nodemon, используя новую функцию --watch.

Использование режима просмотра в Node.js 18.xx

Вы можете включить режим наблюдения в Node.js, используя флаг --watch, который отслеживает точку входа и все импортированные модули на наличие изменений.

node --watch server.js

Для более точного контроля вы можете использовать флаг --watch-path, чтобы указать конкретный каталог, который должен вызвать перезагрузку.

node --watch-path=./src --watch-path=./tests app.js

Приведенная выше команда CLI будет отслеживать изменения файлов в srcи testкаталогах.

Обратите внимание, что эти флаги нельзя использовать в сочетании с --check, --eval, --interactive или при работе в режиме REPL (цикл чтения-оценки-печати).

Если вы хотите сохранить журналы на терминале при перезагрузке, вы можете использовать флаг --watch-preserve-output с флагом --watch.

node --watch --watch-preserve-output test.js

Примечание. Если вы используете node.js 18.11 в такой операционной системе, как Linux, при использовании этого параметра будет выдано исключение ERR_FEATURE_UNAVAILABLE_ON_PLATFORM. Поэтому убедитесь, что вы используете версию Node.js 18 LTS.

Использование режима часов с приложением

Давайте запустим следующий файл node.js, чтобы увидеть, как работает режим наблюдения Node.js, сравнив его с nodemon. Сначала установите Nodemon и Node.js 18.xx (используйте nvm для установки нескольких версий nodejs), создайте файл с именем app.js и добавьте следующий код.

const http = require(‘http’);
const PORT = 8080;

http.createServer(function (req, res) {
 res.writeHead(200, { 'Content-Type': 'text/html' });
 res.write('Hello World!');
 res.end();
}).listen(PORT, () => {
 console.log(`listning on port ${PORT}`)
});

Теперь в терминале выполните приведенные ниже команды.

nodemon app.js

Теперь давайте запустим файл app.js с помощью node watch.

node --watch app.js

С Nodemon вы получите лучшее представление о том, какие файлы отслеживаются инструментом. Несмотря на то, что узел --watch не показывает многих подробностей, он показывает основные изменения файлов и журналы ошибок.

Может ли Node.js «Watch» заменить Nodemon?

Режим Наблюдение в Node.js все еще находится в экспериментальном состоянии. Хотя режим Watch в Nodejs может выполнять все основные операции, которые выполняет Nodemon, ему по-прежнему не хватает некоторых уникальных функций, которые предоставляет Nodemon.

  1. rs для ручного перезапуска приложения.
  2. Запуск неузловых скриптов, таких как python
    nodemon -exec "python -v" ./app.py
  3. Дополнительные конфигурации и обработка файлов конфигурации, nodemon.jsonдля хранения конфигураций для nodemon.

Заключение

Поэтому, если перезапуск приложения при изменении файла или ошибке является единственной требуемой операцией, режим Watch сделает все необходимое. Но если требуется больше операций, Nodemon по-прежнему будет лучшим вариантом для разработки приложений Node.js. Для получения дополнительной информации вы можете прочитать документацию Nodemon и Watch in Node.js. Наконец, спасибо, что нашли время, чтобы прочитать это. Я хотел бы видеть ваши вопросы и комментарии ниже.

Если вам нравится мой контент, пожалуйста, сделайте мне одолжение и приготовьте чашечку кофе для вас и меня!

Ваше здоровье!

Узнать больше