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
срок.