2

我正在构建带有 docker 多阶段构建的 angular6 应用程序。由 angular.cli 创建的默认 angular.json 包含一个包含配置列表的构建部分。我可以使用以下命令选择特定配置

ng build --configuration production 

但在我的 docker 多阶段构建中,我不能直接使用 ng,只能使用 npm

使用“npm run build”会启动“ng build”,但我不知道如何提供附加参数“--configuration production”来选择特定配置。

这是我的 angular.json 文件的一大块

{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "version": 1,
  "newProjectRoot": "projects",
  "projects": {
    "woa-angular6-app": {
      "root": "",
      "sourceRoot": "src",
      "projectType": "application",
      "prefix": "app",
      "schematics": {},
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "outputPath": "dist/woa-angular6-app",
            "index": "src/index.html",
            "main": "src/main.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "src/tsconfig.app.json",
            "assets": [
              "src/favicon.ico",
              "src/assets"
            ],
            "styles": [
              "src/styles.css",
              "src/entity-add.scss"
            ],
            "scripts": []
          },
          "configurations": {
            "production": {
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.prod.ts"
                }
              ],
              "optimization": true,
              "outputHashing": "all",
              "sourceMap": false,
              "extractCss": true,
              "namedChunks": false,
              "aot": true,
              "extractLicenses": true,
              "vendorChunk": false,
              "buildOptimizer": true
            }
          }
        },
        "serve": {...

那是我的 dockerfile

# Stage 1
FROM node:8.11.2-alpine as node

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install

COPY . .

# how to supply the equivalent parameter to select a given configuration?
RUN npm run build 
#RUN ng build --configuration production

# Stage 2
FROM nginx:1.13.12-alpine

COPY --from=node /usr/src/app/dist/woa-angular6-app /usr/share/nginx/html

COPY ./nginx.conf /etc/nginx/conf.d/default.conf
4

1 回答 1

1

Angular的默认构建生产

ng build --prod --build-optimizer

在这里阅读更多https://angular.io/guide/deployment

不确定我是否理解您要执行的操作,但是在 json 包中,您可以根据需要根据需要创建运行命令,例如

"scripts": {
  "build:production": "ng build --prod ... + your prod config flags here",
  "build:staging": "ng build --prod ... +  whatever flags",
  "build:dev": "ng build --prod + whatever flags",
}

检查您可以在此处提供哪些选项:

https://angular.io/cli/build

然后从码头文件你只是

npm run build:production

希望这可以帮助!

于 2018-11-18T16:03:10.807 回答