【问题标题】:Running `ng build` in a specific directory在特定目录中运行`ng build`
【发布时间】:2018-10-07 08:58:46
【问题描述】:

我正在编写一个需要在特定目录中运行ng build 的自动构建脚本。我的项目结构如下:

project
├ build-script
└ project-client
  └ package.json

ng build 正在寻找 package.json 文件,但在当前位置找不到它。有没有办法可以将ng build 定向到子目录而不执行cd(因为 bash 对更改目录有点犹豫)?本质上,我只需要一种方法来告诉ng build 在我指定的目录中操作。

我尝试过ng build ./project-client/,但它给出的错误是“您必须在 angular-cli 项目中才能使用构建命令”

谢谢。

【问题讨论】:

  • @4castle 以这种方式指定目录不起作用。我希望有类似于--prefixnpm 工作的方式
  • ng build 的文档没有提到这样的标志,所以我认为它不存在。你能更详细地解释一下它是如何不起作用的吗? minimal reproducible example 将不胜感激。
  • @4castle 如问题所述,它给出了错误“您必须在 angular-cli 项目中才能使用构建命令”
  • 您是否尝试过在this answer(cd project-client; ng build) 中创建子shell?

标签: bash angular-cli


【解决方案1】:

当我需要转到某个目录来运行脚本时,我通常使用pushdpopd。示例:

pushd /path/to/dir
ng build
popd

运行此 sn-p 后,您的工作目录 (pwd) 将保持不变。

【讨论】:

    【解决方案2】:

    这就是我所做的。

    pushd angular-src && ng build && popd
    

    【讨论】:

      【解决方案3】:

      注意:此答案特定于 Angular 命令

      您可以利用npm run 命令运行Angular 命令,同时使用参数--prefix 指示子目录。


      示例 1:原始问题 (ng build)

      由于 Angular 已经有这个命令的快捷方式,你可以简单地运行

      npm run build --prefix path\to\Angular\project
      

      示例 2:自定义命令(例如:ng build --prod

      首先,在您的package.json 文件中为此命令创建一个快捷方式

      {
          "scripts": {
              // "CMD-SHORTCUT": "custom-command"
              "prod-build": "ng build --prod"
          },
      }
      

      然后,以与示例 1 相同的方式运行新的快捷方式:

      npm run prod-build --prefix path\to\Angular\project
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-23
        • 2012-04-26
        • 2018-10-22
        • 2019-08-25
        • 2019-01-05
        相关资源
        最近更新 更多