в чем преимущество использования `prestart` над` && `в команде` package.json` - PullRequest
0 голосов
/ 31 января 2019

Я думаю, что название самообъяснимо, но опять же:

в чем преимущество использования предварительного сценария npm packege.json, например, prestart по сравнению с просто конкатенацией команд с && в start скрипт?

{
  prestart: "parcel build",
  start "nodemon server.js"
}

против

{
 start: "parcel build && nodemon server.js" 
}

Это более кроссплатформенный?
Может ли он обрабатывать two async endless process как два сервера (build + api)?

что-то еще?

edit: Я нашел выгоду для postInstall.Heroku и такие удалить devDependency после npm install, поэтому в postinstall я могу поставить build процесс, прежде чем Heroku удалит код, который делает это.

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Эти методы предназначены для большей ясности в коде, для разделения логических шагов.

О совместимости.Как я понимаю, npm запускает все сценарии в локальной оболочке, поэтому в большинстве систем linux это будет некоторый клон sh, а в windows - cmd.Поэтому может возникнуть ситуация, когда оболочка не поддержит &&.Но это маловероятно, и вам действительно нужно поддерживать такое поведение, учитывая, что пользователи могут установить bash на любую платформу node.js и установить ее для использования nom?Я лично использую bash в сценариях npm и документ в README.

Если вы хотите запустить несколько длительных процессов, используйте что-то вроде pm2 https://github.com/Unitech/PM2/ в производстве.Когда вы разрабатываете, обычно полезно запускать процессы в нескольких терминалах для просмотра журналов, используйте supervisor https://github.com/petruisfan/node-supervisor для перезапуска процессов при ошибках и изменениях.

Также я обычно пишу .sh сценарии дляобслуживание, например, развертывание и периодические, но ручные задачи и запуск их с помощью npm - вы можете добавить любые именованные сценарии в раздел scripts.

0 голосов
/ 31 января 2019

prestart выполняется до start, как следует из названия, поэтому при выполнении команды в prestart и команды в start обе команды выполняются последовательно, а не параллельно.Запуск команд в start с && запускает их последовательно, но внутри одного и того же шага.

Два метода в значительной степени одинаковы, по крайней мере, с точки зрения результатов.Однако в некоторых версиях Windows могут возникнуть проблемы совместимости с &&.

Если вы хотите выполнять команды параллельно, вы можете использовать & внутри start вместо &&.

...