我有一个vue.正在使用vue cli 3创建和构建的js应用程序.我在.env.test.env.prod个文件中有一些环境变量.

要构建应用程序,我正在使用azure devops构建管道来运行以下命令:

这将生成不同的工件,这些工件将输入azure devops发布管道中的Stage.

我面临的问题是,我不希望每个环境都有单独的构建.我想部署一个不同的环境吗?

我如何一次性构建这些环境?这是个好习惯吗?或者我应该像现在这样为不同的环境设置不同的管道吗?

推荐答案

从词的Angular 看

应该只有一个build pipeline将构建工件,而不管它将在什么环境下运行.

.env.prod可用于将工件部署到任何环境(DevelopmentProduction等)

您必须提供带有令牌的配置,这些令牌将在部署/发布阶段被替换:

env_key1=#{token_key1}#
env_key2=#{token_key2}#
env_key3=#{token_key3}#

因此,只需为所有环境使用单个配置文件来构建项目和发布工件.

从CD的Angular

我建议使用带有多个阶段的单release pipeline

根据stages提供单独的variables groups.它允许将变量分开,逻辑分组,并使用Azure Key Vault作为秘密来源.变量名必须等于环境标记(不带前缀和后缀).

enter image description here

Stage中加入你想要的任何Task,这将找到并替换 token .

目前,我使用来自marketplace的Replace Tokens扩展.根据stage,将替换不同的变量组.Replace Tokens任务自动完成所有工作,即扫描js个文件并替换令牌.默认的令牌前缀和后缀是:#{ }#,但任务允许提供您想要的自定义标记.

Vue.js相关问答推荐

为什么v-show需要组件的包装元素?

Vue.js编译的render函数不起作用

元素不会对react 性props 的更改做出react

在移动版本中使用标准的 v-data-table

nuxt.js auth 始终重定向到登录,而不是允许转到带有 auth: false 的页面,

Vuetify 扩展面板,面板标题左侧带有图标

在Vue cli项目中,Laravel api app放在哪里以及如何在vue js中调用api?

vuejs:将props传递给javascript中的组件?

Vuelidate 判断true/false

VueJs this.method 不是函数?如何在 Vuejs 的另一个方法中调用一个方法?

PhpStorm 中Expected预期表达式

如何从我的 Vuetify 数据表中正确更新 Vuex 状态

按键删除对象不会更新vue组件

如何从 vue 组件调用 App.vue 中的方法

axios 拦截器响应未定义

使用 Firebase Auth for Google 将匿名用户转换为注册用户

未在实例上定义,但在渲染期间引用

单击时交换组件

如何在 Vue.js 中延迟 @keyup 处理程序

Vue.js 中的条件 依赖于props值?