scripts 键提供了一个方便的位置,可以在您已经强制的package.json 中定义项目特定的自动化脚本。这有助于开发人员只需键入一些简单的内容,例如npm run cover 或npm run deploy,并启动一系列可能复杂的步骤(具有非常具体的文件位置或程序参数)。这避免了键入长命令行,并且避免了错误。例如,我的一个项目包括以下命令:
"scripts": {
"cover": "cd source/js/jutil && istanbul cover _mocha -- -R spec && open coverage/lcov-report/jutil/index.html",
"test": "cd source/js/jutil && mocha",
"deploy": "(git diff --quiet --exit-code --cached || git commit -a -m 'deploy') && git push heroku master && heroku open",
"start": "gulp start"
}
只需几句话,我就可以快速运行测试、覆盖测试或部署到云主机,而无需记住详细的命令行选项或文件位置。
但要小心。 JavaScript / node.js 社区对于定义这种自动化的“最佳”或“正确”位置存在很多争议。
许多开发人员更喜欢将自动化转移到单独的“任务运行器”/“构建系统”,例如 gulp、grunt,甚至是好的 ole Unix make。对于这些项目,scripts 标签将为空或几乎为空。 (npm init 默认为test 生成至少一个密钥。)相反,您需要查看他们的gulpfile.js、Gruntfile 或Makefile。
其他开发人员拒绝成为构建系统机制和/或分离构建配置的想法。他们通常更喜欢将“一些简单的脚本”直接放在package.json 中,然后收工。
根据我的经验,“一些简单的命令”是一个很好的目标,但脚本的复杂性很快就会超过它。在具有许多不同资产和资产类型的大型项目中尤其如此,需要实时重建或实时重新加载,或者具有多个部署选项。我通常以gulp 结束繁重的工作,但也许一些可以真正简明扼要的脚本仍然驻留在package.json 中。 “你的旅费可能会改变。”