【发布时间】:2018-04-11 09:07:50
【问题描述】:
目前我在Angular4中有三种不同的环境:
- 环境
- 环境调试
- Environment.Release
现在,在 vsts 构建管道中,我设置了多配置,其中一个定义为调试和发布准备工件:
在我运行 npm install 和 npm run {either debug or release) 之前,我正在使用“Replace tokens”任务来替换每个调试和发布环境的变量然后运行 webpack 打包文件用于调试或发布环境。
我看到 Release 中有一个替换变量的选项,您可以在其中替换 .json 文件中的变量(如 appsettings.json):
但问题是当 webpack 将源代码打包到一个 bundle.js 中时,我认为我不能使用 release 来替换环境变量?可以吗?
所以我想要实现的是解耦调试和发布版本。这很简单,我只是为调试和发布重新创建单独的定义,在这里我只替换每个环境的变量。第二阶段是从构建管道中实际删除替换令牌任务,并使用发布变量部分来替换发布中设置的每个环境的变量。 webpack 在 js 中构建 bundle 后,Angular 怎么可能?
【问题讨论】:
-
从环境文件中获取非特定于构建的所有设置的配置。看看这里stackoverflow.com/a/49559443/1160794
-
谢谢,这正是我所需要的,.json 文件的结构是否与 appsettings.json 相同以使用 Release 变量?
-
您可以在 json 文件中使用您需要的任何格式。之后,取决于您选择的格式(在提供的示例中,它与 environment.xx.ts 文件格式相同)
-
我在想json文件是否必须是相同的格式,所以vsts中的发布阶段可以替换变量?例如,对于标准 appsettings.json,我们在 release 中替换像这样的变量:i.imgur.com/U9zeoJ4.png 用于“ApplicationInsights”这样的结构:{“InstrumentationKey”:“xxx”},
-
@AmelSalibasic 如果您使用的是 angular-cli,那么这是由
ng build --env="envname"自动完成的
标签: c# angular azure azure-devops azure-pipelines