我有一个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相关问答推荐

在VueJS中卸载元素之前是否应该删除JavaScript事件收件箱?

我需要在 nuxt2 上使用 /index 作为 url 的一部分

如何将外部 svg 转换为 Vue3 组件?

Vuetify 复选框未正确显示值

使用计算(computed)属性更改视图

如何在vue中获取特定类别的产品列表

从数据库中删除后,Vue.js $remove 不删除元素

带有热重载的 docker 容器上的 Vue.js 应用程序

Vue CLI - 编译后将配置文件保留为外部

如何在map中添加新的标记 onclick?

Vue cli 3项目,图像路径中的动态src不起作用

在 SPA VueJS 中全局声明 mapState 和 mapMutations

Keycloak:用户基于角色的客户端登录访问限制

使用 vue-router 的默认子路由

使用 Vue-cli,我在哪里声明我的全局变量?

是否可以从 vue-devtools 中排除 vue 事件和 vuex Mutations?

如何从扩展面板(Vuetify)中删除阴影?

Vuetify 离线文档

使用 Vee-validate 禁用按钮,直到正确填写表单

如何修复套接字 io 中的 400 错误错误请求?