Как передать параметр npm в angular.json

Я новичок в angular, пытаюсь передать параметр моему процессу сборки angular.

Я хочу создать свое приложение для конкретного клиента, поэтому я использую переменные npm для копирования настроек клиента:

npm run build --client=cocacola

Однако я не могу понять, как передать имя моего клиента (например, cocacola) в angular.js

Это мои скрипты в package.json

"scripts": {
  "ng": "ng",
  "start": "ng serve",
  "prebuild": "cp src/app/clients/$npm_config_client.settings.ts src/app/app.settings.ts",
  "build": "ng build",
  "test": "ng test",
  "lint": "ng lint",
  "e2e": "ng e2e"
},

Это часть моего angular.json

"build": {
  "builder": "@angular-devkit/build-angular:browser",
  "options": {
    "outputPath": "dist",
    "index": "src/index.html",
    "main": "src/main.ts",
    "polyfills": "src/polyfills.ts",
    "tsConfig": "src/tsconfig.app.json",
    "assets": [
      "src/favicon.ico",
      "src/assets",
      {"glob": "**/*", "input" : "src/$npm_config_client/assets", "output": "/assets/"}
    ],
    "styles": [
      "src/styles.scss"
    ],
    "scripts": [
      "node_modules/jquery/dist/jquery.min.js",
      "node_modules/popper.js/dist/umd/popper.min.js",
      "node_modules/bootstrap/dist/js/bootstrap.min.js"
    ]
  },

Где я пытаюсь использовать свой --client в options/assets для загрузки определенных клиентских активов.

{"glob": "**/*", "input" : "src/$npm_config_client/assets", "output": "/assets/"}

Можно ли это сделать в Angular?

Я также создал по одному angular.json для каждого клиента, но должен быть способ получше.

2 ответа

Я бы посоветовал вам создать несколько проектов, поэтому:

angular.json:

{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "version": 1,
  "newProjectRoot": "projects",
  "projects": {
      "main":{
         "architect": {
            "build": {
               ... standard build configuration
            }
         }
      }
      "cocacola":{
         "architect": {
            "build": {
               ... add cocacola wherever you need here
            }
         }

      }
   }
   "defaultProject": "main"
}

затем вы можете включить или выключить этот параметр с помощью параметра проекта команды angular, поэтому:

package.json:

"scripts": {
    "build": "ng build",
    "build:cocacola": "ng build cocacola"
}

npm run build:cocacola теперь запустит cocacola проект и npm run build не работает cocacola вариант.

Вы пытались использовать «конфигурацию»?

Так:

      "configurations": {
"cocacola": {
          "assets": [{"glob": "**/*", "input" : "src/cocacola/assets", "output": "/assets/"}],
        }}
Другие вопросы по тегам