【问题标题】:about "scripts" key in package.json关于 package.json 中的“scripts”键
【发布时间】:2016-07-22 06:29:39
【问题描述】:

谁能解释一下 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"
 }

【问题讨论】:

标签: javascript node.js build npm package.json


【解决方案1】:

scripts 键提供了一个方便的位置,可以在您已经强制的package.json 中定义项目特定的自动化脚本。这有助于开发人员只需键入一些简单的内容,例如npm run covernpm 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 社区对于定义这种自动化的“最佳”或“正确”位置存在很多争议。

许多开发人员更喜欢将自动化转移到单独的“任务运行器”/“构建系统”,例如 gulpgrunt,甚至是好的 ole Unix make。对于这些项目,scripts 标签将为空或几乎为空。 (npm init 默认为test 生成至少一个密钥。)相反,您需要查看他们的gulpfile.jsGruntfileMakefile

其他开发人员拒绝成为构建系统机制和/或分离构建配置的想法。他们通常更喜欢将“一些简单的脚本”直接放在package.json 中,然后收工。

根据我的经验,“一些简单的命令”是一个很好的目标,但脚本的复杂性很快就会超过它。在具有许多不同资产和资产类型的大型项目中尤其如此,需要实时重建或实时重新加载,或者具有多个部署选项。我通常以gulp 结束繁重的工作,但也许一些可以真正简明扼要的脚本仍然驻留在package.json 中。 “你的旅费可能会改变。”

【讨论】:

    【解决方案2】:

    参考这个,它会给你一个更好的主意script in package.json

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-20
      • 2019-01-23
      • 2023-03-06
      • 2017-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多