我正在做一个ES6 AngularJS项目,在这个项目中,我使用webpack将所有东西捆绑到dist/app.js中。
我正在使用的CI/CD堆栈是SCM - Jenkins - Octopus:
npm install和gulp,后者使用gulp-webpack从一个入口点绑定和缩小所有内容,并将其放入dist/app.js章鱼项目在多个环境中工作,我必须有一种方法根据环境替换一些配置变量。为此,八达通提供了一个“文件中的替代变量”部署步骤。
当我不使用模块绑定器和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包中的变量,但这看起来相当低效。
发布于 2016-07-08 17:34:20
我们在构建过程中也有类似的地方,也同样感到困惑。我们确定了一个使用JS本身的代码令牌替换解决方案,以确定令牌是否已被替换,因此它将在本地开发(预部署)中工作。
我们添加了如下代码:
// config --------------------------
(function () {
// These values will be replaced by Octopus during deployment.
var configuredApiUrl = "#{Api:Url}";
apiUrl = (configuredApiUrl[0] !== "#") ?
configuredApiUrl : "http://api.local/v1";
})();然后在输出文件上设置变量替换。
我希望这能帮到你!
https://stackoverflow.com/questions/38270962
复制相似问题