关于 "scripts" 输入 package.json
about "scripts" key in package.json
谁能解释一下 package.json 文件中 "scripts" 键的用途。
在学习 Angular 2 时,我在 package.json 文件中遇到了以下脚本,
不确定这个密钥有什么用。
"scripts": {
"postinstall": "npm run typings install",
"tsc": "tsc",
"tsc:w": "tsc -w",
"start": "concurrent \"node ./bin/www\" \"npm run tsc:w\"",
"typings" : "typings"
}
参考这个,它会给你一个更好的主意script in package.json。
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 社区对 "best" 或 "right" 定义此类自动化的地方存在很多争议。
许多开发人员更喜欢将自动化转移到单独的 "task runners" / "build systems",例如 gulp, grunt,甚至是好的 ole Unix make
。对于这些项目,scripts
标签将为空或几乎为空。 (默认情况下,npm init
至少为 test
生成一个密钥。)相反,您需要查看他们的 gulpfile.js
、Gruntfile
或 Makefile
。
其他开发人员拒绝成为构建系统机制的想法 and/or 分离构建配置。他们通常更喜欢将 "a few simple scripts" 直接放在 package.json
中,然后收工。
根据我的经验,"a few simple commands" 是一个很好的目标,但脚本的复杂性很快就会超过它。在具有许多不同资产和资产类型的大型项目中尤其如此,这些项目需要实时重建或实时重新加载,或者具有多个部署选项。我通常以 gulp
完成繁重的工作,但也许一些真正可以简明扼要地陈述的脚本仍然驻留在 package.json
中。 "Your mileage may vary."
谁能解释一下 package.json 文件中 "scripts" 键的用途。
在学习 Angular 2 时,我在 package.json 文件中遇到了以下脚本, 不确定这个密钥有什么用。
"scripts": {
"postinstall": "npm run typings install",
"tsc": "tsc",
"tsc:w": "tsc -w",
"start": "concurrent \"node ./bin/www\" \"npm run tsc:w\"",
"typings" : "typings"
}
参考这个,它会给你一个更好的主意script in package.json。
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 社区对 "best" 或 "right" 定义此类自动化的地方存在很多争议。
许多开发人员更喜欢将自动化转移到单独的 "task runners" / "build systems",例如 gulp, grunt,甚至是好的 ole Unix make
。对于这些项目,scripts
标签将为空或几乎为空。 (默认情况下,npm init
至少为 test
生成一个密钥。)相反,您需要查看他们的 gulpfile.js
、Gruntfile
或 Makefile
。
其他开发人员拒绝成为构建系统机制的想法 and/or 分离构建配置。他们通常更喜欢将 "a few simple scripts" 直接放在 package.json
中,然后收工。
根据我的经验,"a few simple commands" 是一个很好的目标,但脚本的复杂性很快就会超过它。在具有许多不同资产和资产类型的大型项目中尤其如此,这些项目需要实时重建或实时重新加载,或者具有多个部署选项。我通常以 gulp
完成繁重的工作,但也许一些真正可以简明扼要地陈述的脚本仍然驻留在 package.json
中。 "Your mileage may vary."