在package.json命令中在&&上使用prestart的好处是什么

时间:2019-01-31 08:55:11

标签: javascript npm package.json

我认为标题是自我解释,但再次:

仅使用packege.json脚本中带有prestart的连接命令,使用npm &&这样的前置脚本(例如start)有什么好处?

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

vs

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

跨平台更多吗?
它可以像两台服务器(build + api)一样处理two async endless process吗?

还有其他东西吗?

编辑: 我发现postInstall有好处。 Heroku并在devDependency之后删除npm install,因此在postinstall中,我可以在Heroku删除执行此操作的代码之前放置build进程。

2 个答案:

答案 0 :(得分:2)

顾名思义,

prestart之前 start运行,因此在prestart中运行命令,在start中运行命令按顺序,不平行。在start中与&&一起运行命令将按顺序运行它们,但是要在同一步骤中进行。

这两种方法至少在结果方面几乎相同。但是,某些版本的Windows上的&&可能存在兼容性问题。

如果要并行运行命令,可以在&内使用start,而不是&&

答案 1 :(得分:0)

这些方法在代码中更清晰,逻辑步骤分离。

关于兼容性。据我了解,npm在本地shell中运行所有脚本,因此在大多数linux系统上,它将是一些sh克隆,而在Windows上它将是cmd。因此,可能存在外壳不支持&&的情况。但这不太可能,您是否真的需要支持这种行为,考虑到用户可以在任何平台上安装bash,可以在其上安装node.js并设置nom使用它?我个人在npm脚本中使用bash,并在自述文件中使用文档。

如果要运行多个长时间运行的进程,请在生产中使用pm2 https://github.com/Unitech/PM2/之类的东西。在进行开发时,通常最好在多个终端上运行进程以查看日志,并使用主管https://github.com/petruisfan/node-supervisor对错误和更改重新启动进程。

我也通常编写.sh脚本进行维护,例如部署和定期脚本,但是手动任务并使用npm运行它们-您可以在scripts部分中添加任何命名的脚本。