Nodemon запускается несколько раз при сохранении при использовании babel

Я использую Nodemon и Babel 6. Я удалил Nodemon глобально и установил последнюю версию.

Я пробовал обе следующие строки в моих скриптах npm:

"watch-new": "nodemon src/index.js --exec babel-node"

А также

"watch-new": "nodemon src/index.js --exec babel -w src/ -d build/ --source-maps"

Изменения в запуске babel, кажется, приводят к подобным / идентичным беспорядкам, связанным с nodemon.

Я начал с файла, который просто содержал console.log("Hello, World!"); затем добавил строку после этого заявления, которое содержало console.log("Test");, Сохранение (только один раз) файла с двумя строками привело к следующему выводу на консоль.

Добавление любого из следующих элементов в nodemon приводит к перезапуску моей программы только один раз: "--delay 2.5" или "-L" / "--legacyWatch"

Почему он запускается и перезагружается так много раз?

введите описание изображения здесь

1 ответ

Я обнаружил, что комбинации nodemon, babelи другие программы типа наблюдателя часто могут странным образом взаимодействовать. Этот тип "двойного прогона" довольно распространен. Они отлично работают, когда настроены именно так, но могут быть хрупкими.

Тем не менее, я не понимаю ваш выбор аргументов командной строки. Я не скажу, что они не правы, но они не соответствуют версиям babel что я установил, или документацию, которую я использую. Произошли заметные изменения в рекомендуемых способах запуска Babel; Не вся документация в Интернете актуальна и соответствует последним подходам.

Поэтому вместо того, чтобы пытаться отлаживать то, что не работает в вашей конфигурации, позвольте мне дать вам конфигурацию, которая работает для меня.

Сначала я установил Babel и его пресеты:

npm install --save-dev babel-cli babel-preset-es2015

Тогда скрипт npm в package.json:

"watch-new": "nodemon src --exec babel --presets es2015 -w src/ --out-dir build/ --source-maps"

(Вы можете использовать другие пресеты. Я использую только большой, ES2015.)

Я призываю nodemon против исходного каталога, а не одного исходного файла, в другом, чтобы сохранить babel от вложения src под build; Я полагаю, вы хотите индивидуальный .js файлы в build не src подкаталог. Я также использую --out-dir вариант, который я понимаю, чтобы быть правильным (не -d).

Наконец, запустите его:

npm run watch-new

Эти пакеты и этот вызов сценария дают мне правильное поведение при повторном запуске за изменение. Если ты хочешь node запускать код сразу после преобразования вместо сохранения в build/, ты можешь измениться --exec babel в --exec babel-node и удалите --out-dir Спецификация.

В заключение, ваш вопрос помечен для ECMAscript-6. То, что когда-то называлось es6 теперь более официально называется es2015, (См., Например, этот учебник по названиям новой версии.) С большей вероятностью вы получите правильную, актуальную документацию, если будете искать по новой es2015 срок.

Другие вопросы по тегам