2017-01-05 10 views
0

Я понимаю, что на этом есть много связанных вопросов. Нет, я нашел этот вопрос.Как я могу получить --debug и «смотреть», чтобы хорошо сосуществовать?

Я хочу, чтобы мой процесс перезапустился с --debug, когда меняет код. Две команды в моей package.json:

"debug-no-inspect": "API_PORT=5566 API_LOGLEVEL=DEBUG node --debug dist/index.js | bunyan -o short", 
"watch": "watch 'npm run debug-no-inspect' ./src -d --wait=1", 

OK эти работы хорошо сами по себе и отлично работают без --debug, но вместе --debug вызовет ошибку EADDRINUSE:

Error: listen EADDRINUSE :::5858 

Увеличение времени до 4 секунд не сделал этого. Он отлично работает, если я Ctrl-C и убиваю часы и перезапускаю, но это побеждает цель. Есть ли способ программно освободить этот порт отладчика перед перезагрузкой процесса, не убивая все процессы моего узла?

Мой лучший удар в это до сих пор: Добавить глупую переменную ENV (ID=9877876 или FINDME=alksdjflaksjdfl) к команде запуска, а затем использовать это, чтобы найти процесс позже и убить его перед перезапуском:

"watch": "watch 'kill $(ps a | grep [ID]=9877876 | cut -d \" \" -f 1) && npm run debug-no-inspect' ./src -d" 

Однако это не работает. Команда работает сама по себе, но не с watch. Другая библиотека - лучший выбор?

Узел 6; OSX; Баш

ответ

0

Кажется, что решение было удалить watch и использовать nodemon вместо:

package.json:

"watch": "nodemon -V -w config -w src -e coffee,yaml,properties --exec npm -- run debug", 

Работает просто отлично.