设置不同的angular-cli json或传递变量

时间:2017-04-06 08:48:36

标签: angular typescript angular-cli

我有一个可以用于不同客户的应用程序,所以我需要以不同的方式对其进行个性化,具体取决于客户。
我基本上需要做的是在angular-cli.json文件中启动ng build并不总是使用相同的设置,有没有办法:

1)当我启动构建时更改angular-cli.json文件?
2)传递一个变量来改变'styles'和'dist'字段?

现在我被迫记住,每次我修改我的应用程序,为每个客户更改文件并进行构建,我想编写一个脚本,使所有构建级联,但如果我无法根据构建个性化angular-cli.json。

更新

我找到了这个link但是如何使用它?我在文档here中搜索过但我不明白,我是否必须在anguylar-cli.json的app数组下添加一个声音?或者我必须制作另一个与应用程序类似的数组?

更新2

这是我在应用程序下的内容:

{
  "name":"app1",
  "root": "src",
  "outDir": "dist",
  "assets": [
    "fonts",
    "images",
    "assets",
    "favicon.ico"
  ],
  "index": "index.html",
  "main": "main.ts",
  "test": "test.ts",
  "tsconfig": "tsconfig.json",
  "prefix": "app",
  "mobile": false,
  "styles": [
    "paper.css",
    "styles.css",
    "style_app1.css"
  ],
  "scripts": ["../node_modules/chart.js/dist/Chart.bundle.min.js"],
  "environments": {
    "source": "environments/environment.ts",
    "dev": "environments/environment.ts",
    "prod": "environments/environment.prod.ts"
  }
},
{
  "name":"app2",
  "root": "src",
  "outDir": "dist2",
  "assets": [
    "fonts",
    "images",
    "assets",
    "favicon.ico"
  ],
  "index": "index.html",
  "main": "main.ts",
  "test": "test.ts",
  "tsconfig": "tsconfig.json",
  "prefix": "app",
  "mobile": false,
  "styles": [
    "paper.css",
    "styles.css",
    "style_app2.css"
  ],
  "scripts": ["../node_modules/chart.js/dist/Chart.bundle.min.js"],
  "environments": {
    "source": "environments/environment.ts",
    "dev": "environments/environment.ts",
    "prod": "environments/environment.prod.ts"
  }
}

说它不起作用是因为在dist2中我没有找到任何东西,当我启动构建时--app app2

1 个答案:

答案 0 :(得分:2)

文件.angular-cli.json有一个属性应用程序,这是一个可以有多个应用程序的数组。默认情况下,ng只在那里生成一个条目,例如:

{
  "root": "src",
  "outDir": "dist",
  "assets": [
    "assets",
    "favicon.ico"
  ],
  "index": "index.html",
  "main": "main1.ts",
  "polyfills": "polyfills.ts",
  "test": "test.ts",
  "tsconfig": "tsconfig.app.json",
  "testTsconfig": "tsconfig.spec.json",
  "prefix": "app",
  "styles": [
    "styles.css"],
  "scripts": [],
  "environmentSource": "environments/environment.ts",
  "environments": {
    "dev": "environments/environment.ts",
    "prod": "environments/environment.prod.ts"
  }
},

上面的应用程序部分定义了一个包含引导代码的main1.ts应用程序。如果你在同一个项目中有另一个应用程序,其中bootstrap代码在main2.ts中,你需要重复上面的配置,但是使用" main" =" main2.ts"。现在你有一个包含两个应用程序的数组,你可以使用相应的数组索引构建其中一个,例如:

ng build --app 0

ng build --app 1

您还可以添加一个属性" name"到应用程序配置,例如

"apps": [
    { "name":"app1",
      "root": "src",
      "outDir": "dist",
       ... 

并按如下方式运行构建:

ng build --app app1