как автоматически перезапускать npm каждый раз, когда я переключаю ветки на git?

#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.