【问题标题】:Why do I need to add the 'run' argument when building an angular app (npm run build)?为什么在构建 Angular 应用程序(npm run build)时需要添加“运行”参数?
【发布时间】:2021-03-16 03:40:13
【问题描述】:

我只是好奇。这是 package.json 文件的一部分

"start": "ng serve -o",
"build": "ng build",
"build-prod": "ng build --prod",
"test": "ng test",

我只是好奇。为什么写作npm startnpm test 有效。但是,npm build 或 npm build-prod 给我以下错误build npm build called with no arguments. Did you mean to 'npm run-script build'? 为什么我需要在构建时添加 runnpm run buildnpm run build-prod

感谢您的帮助

【问题讨论】:

  • 有人否决了这个问题。有什么理由吗?这很明显为什么有时我应该使用run 而另一次我应该跳过run?请让我知道或指向我的链接。我没找到。

标签: angular-cli npm-scripts


【解决方案1】:

npm-run 文档的 “描述” 部分中它指出:

"run[-script]teststartrestartstop 使用命令,但也可以直接调用。"

注意:我添加的粗体强调

本质上,npm 会考虑在 package.jsonscripts 部分中定义的任何脚本; teststartrestartstop,作为 “生命周期” 脚本。这四个 “生命周期” 脚本中的任何一个都可以在run 关键字的情况下调用。

上述四个 npm 脚本名称(即 "lifecycle" 脚本)中的每一个都有一个指定的ClI Command,即npm testnpm startnpm restart 和@987654326 @,用于调用它们。

例如,考虑以下在 package.json 中定义的人为设计的 "scripts" 部分:

"scripts": {
  "start": "echo \"starting...\"",
  "restart": "echo \"restarting...\"",
  "stop": "echo \"stopping...\"",
  "test": "echo \"testing...\"",

  "foo": "echo \"foo...\""
},
  • 名为foo 的脚本是唯一必须使用run 关键字调用的脚本,即npm run foo

  • 与其他startrestartstoptest不同,它们可以在没有run关键字的情况下调用;即npm startnpm stop等等。

    旁注: startrestartstoptest 也可以使用 run 关键字调用。即npm run startnpm run stop等等。

文档还对npm run 进行了以下说明:

“如果没有提供“命令”,它将列出可用的脚本 [...] 当包中的脚本被打印出来时,它们被分成生命周期(测试、启动、重启)和直接运行脚本。”

因此,鉴于您的问题中显示的 package.json,如果您 cd 到您的项目目录并运行 npm run 您将看到 starttest 脚本列在“生命周期”部分下。

【讨论】:

    猜你喜欢
    • 2020-08-21
    • 2020-12-25
    • 2017-11-02
    • 2023-03-03
    • 2021-08-10
    • 2021-03-03
    • 2018-01-01
    • 2019-04-27
    • 2022-06-22
    相关资源
    最近更新 更多