我认为标题是自我解释,但再次:
仅使用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
进程。
答案 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
部分中添加任何命名的脚本。