Angular 是否在基于特定环境的生成过程中替换配置文件中的端点值?

Angular 是否在基于特定环境的生成过程中替换配置文件中的端点值?,angular,npm,webpack,azure-devops,azure-pipelines,Angular,Npm,Webpack,Azure Devops,Azure Pipelines,我现在正在开发Angular 2/4/5应用程序一段时间(这就是为什么2/4/5),使用webpack捆绑所有东西,等等。应用程序本身与用C#编写的后端API通信。我们现在正处于一个阶段,我们需要支持4种不同的环境,这将导致上述后端API的4个不同端点,因此,我开始探索如何在npm run build:environment期间将端点的值替换为VSTS构建定义,VSTS构建定义在运行特定脚本时也应该进行转换 以下是配置文件的外观: const AppConfig = { hub

我现在正在开发Angular 2/4/5应用程序一段时间(这就是为什么2/4/5),使用
webpack
捆绑所有东西,等等。应用程序本身与用C#编写的后端API通信。我们现在正处于一个阶段,我们需要支持4种不同的环境,这将导致上述后端API的4个不同端点,因此,我开始探索如何在
npm run build:environment
期间将端点的值替换为VSTS构建定义,VSTS构建定义在运行特定脚本时也应该进行转换

以下是配置文件的外观:

const AppConfig = {     
    hubName: "eventhub",
    baseApiUrl: "https://endpoint.com/api/",
    baseUrl: "https://endpoint.com/"
};
我从
webpack.prod.js
webpack.dev.js
开始,配置了两个脚本:
build:prod
build:dev
。这两个
webpack
文件分别将
process.env.env
的值设置为
production
development
。使用这些信息,我尝试读取
config.ts
文件中
process.env.env
的值,然后执行
switch/case
并根据该值设置
baseapirl
baseUrl
的值,但这不起作用,它一直默认返回到
development
,因此,我放弃了这种方法,开始探索其他选择,比如为
webpack
使用
normalModuleReplacementPlugin
,但收效甚微


在执行生成任务期间,有没有更好的方法来替换配置文件的特定属性?

您可以使用webpack做得更好,因为它将用您在webpack配置文件中指定的值替换typescript代码中的变量

PS:但在我的例子中,我没有指定确切的值-而是从webpack配置中的process.env读取值,所以我只需要一个配置:

插件:[
新的webpack.DefinePlugin({
ENV:JSON.stringify(process.ENV.ENV)
})
]

我想这篇文章会帮你找到你需要的,让你走上正轨谢谢!这篇文章为我提供了有价值的见解,但提出的答案对我来说实际上是一个完美的解决方案。我想知道,这个问题怎么没有得到更多的关注,这个团队怎么还没有解决?