首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >詹金斯网站config.js中八达通变量替换策略

詹金斯网站config.js中八达通变量替换策略
EN

Stack Overflow用户
提问于 2016-07-08 15:58:33
回答 1查看 2.1K关注 0票数 3

我正在做一个ES6 AngularJS项目,在这个项目中,我使用webpack将所有东西捆绑到dist/app.js中。

我正在使用的CI/CD堆栈是SCM - Jenkins - Octopus:

  1. 对我的代码的更新被推送到存储库中。
  2. Jenkins克隆存储库,调用npm installgulp,后者使用gulp-webpack从一个入口点绑定和缩小所有内容,并将其放入dist/app.js
  3. 构建后,Jenkins将应用程序打包到nuget pkg中,并将其推送到应用程序部署到IIS的Octopus部署中。

章鱼项目在多个环境中工作,我必须有一种方法根据环境替换一些配置变量。为此,八达通提供了一个“文件中的替代变量”部署步骤。

当我不使用模块绑定器和ES6时,我只需要一个配置文件来设置一些角常数,然后使用这些参数。我会有一个config.js文件和一个config.template.js文件。Octopus将替换config.template.js文件中的变量,而我将其设置为将config.js替换为config.template.js后部署。

但是,现在我只是使用一个普通的config.js,它导出了我需要使用的变量,然后我将这些变量导入到与其相关的文件中(比如包含角控制器函数的文件)。

使用此设置,我不能像以前那样进行替换,因为我的config.js将被包含在dist/app.js中。有人能帮我想出如何实现这一目标的策略吗?我想在构建之前先做config.js - config.template.js交换,然后让Octopus替换整个app.js包中的变量,但这看起来相当低效。

EN

回答 1

Stack Overflow用户

发布于 2016-07-08 17:34:20

我们在构建过程中也有类似的地方,也同样感到困惑。我们确定了一个使用JS本身的代码令牌替换解决方案,以确定令牌是否已被替换,因此它将在本地开发(预部署)中工作。

我们添加了如下代码:

代码语言:javascript
复制
// config --------------------------
(function () {
    // These values will be replaced by Octopus during deployment.
    var configuredApiUrl = "#{Api:Url}";
    apiUrl = (configuredApiUrl[0] !== "#") ?
        configuredApiUrl : "http://api.local/v1";        
})();

然后在输出文件上设置变量替换。

我希望这能帮到你!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38270962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档