#git #npm #nodemon
#git #npm #nodemon
Вопрос:
Каждый раз, когда я переключаю ветки на git, возникает ошибка сборки. Сборка исчезает, если я перезапускаю npm. Как автоматически перезапускать npm каждый раз, когда я переключаю ветки на git? Я пробовал nodemon, но он перезапускается слишком много раз. Есть ли какое-либо другое решение, которое подходит для этой конкретной ситуации?
Ответ №1:
Если вы хотите выполнить определенную команду после переключения между ветвями git (в вашем случае npm restart
), вы можете создать псевдоним git и выполнить restart сразу после проверки. Просто добавьте следующее в свой конфигурационный файл git.
[alias]
npm-checkout = "!res() { git checkout $@ amp;amp; npm restart; }; res"
Итак, отныне вместо использования git checkout
вы будете использовать git npm-checkout
which переключит ветку git и перезапустит npm.
============================== Обновлено ====================================
Это будет работать, только если вы запускаете git npm-checkout
с того же терминала. Однако, если вы хотите перезапустить узел, который работает в другом терминале, есть несколько дополнительных шагов. Одно из возможных решений — назначить идентификатор процесса вашему приложению, а затем отключить его с помощью pkill
команды linux. `
app.js:
process.title = "processId";
console.log("Sleep for 10 seconds");
setTimeout(function () {
console.log("Wake up")
}, 10000);`
и внутри вашего package.json
`
{
"name": "test",
"main": "app.js",
"scripts": {
"start": "node app.js",
"stop": "pkill processId || true"
}
}
`
Надеюсь, это поможет.
Комментарии:
1. npm() { git checkout $ @ amp;amp; npm restart }; npm: -c: строка 1: синтаксическая ошибка: неожиданный конец файла
2. о да, после перезапуска npm отсутствует точка с запятой; так что это должно выглядеть примерно так :
"!npm() { git checkout $@ amp;amp; npm restart; }; npm"
3. это избавляет от
unexpected end of file syntax error
but, оно не перезапускает npm. npm запущен в другом терминале. нужно отключить это, а затем перезапустить. если вы просто сделаете то, что написали, вы получите этоerror: pathspec 'restart' did not match any file(s) known to git.
4. Я все еще не нашел никакого решения этой проблемы, кроме ручного выхода
npm
и вводаnpm start
при каждом переключении веток5. Я обновил первоначальный ответ. Это может помочь решить вашу проблему. Однако правильный псевдоним
"!res() { git checkout $@ amp;amp; npm restart; }; res"
— это то, что вам все еще нужно несколько дополнительных шагов для правильного перезапуска npm.