我一直试图让这个工作,也许我错过了一些东西。我正在使用ng-constant并设置ng-constants issue
中提到的不同环境端点但是我使用gulp并且配置看起来像
gulp.task('environmentsapi', function () {
return ngConstant({
stream: true,
development: {
constants: {
"ENV": {"api": "http://1.1.1.1:8082/"}
}
},
production: {
constants: {
"ENV": {"api": "https://productionapplink/"}
}
}
})
// Writes config.js to dist/ folder
.pipe(gulp.dest('dist/scripts/config'));
});
我无法弄清楚如何在不同的gulp任务中调用不同的端点,例如链接ngconstant中的示例:开发等。我如何在任务环境中运行它,因为此任务在所有环境构建中共享。请让我知道如何做到这一点。
gulp.task('build', function () {
runSequence('clean', ['sass', 'scripts', 'bower_components', 'environmentsapi' //How can I run ngconstant:development here? ], 'wiredep')
});
答案 0 :(得分:1)
只需创建设置标志的新任务!
在这里,我使用默认为development
的{{1}}标记。
true
现在,使用var development = true;
gulp.task('prod', function () {
development = false;
});
gulp.task('environmentsapi', function () {
const apiEndpoint = development ? 'http://1.1.1.1:8082/' : 'https://productionapplink/';
return ngConstant({
stream: true,
constants: {
'ENV': {api: apiEndpoint}
}
});
});
将构建您的应用程序,并将gulp build
设置为ENV.api
,即开发端点。
调用'http://1.1.1.1:8082/'
会使您的输出使用gulp prod build
设置为ENV.api
。
如评论部分所述,当您只有两个环境时,上述解决方案非常完美,但当环境数量增加时,它很快就会失控。
在这种情况下,我建议使用不同的方法,即Pirate方式,使用yargs。
以下是您的新'https://productionapplink/'
:
gulpfile.js
使用如下:
const argv = require('yargs').argv;
const endpoints = {
'dev': 'http://1.1.1.1:8082/',
'prod-org': 'https://productionapplink.org/',
'prod-com': 'https://productionapplink.com/',
'prod-gov': 'https://productionapplink.gov/'
};
gulp.task('enviornmentsapi', function () {
const apiEnpdoint = typeof argv.env === 'undefined' ? endpoints.dev : endpoints[argv.env];
return ngConstant({
stream: true,
constants: {
ENV: { api: apiEnpdoint }
}
}).pipe(gulp.dest('dist/scripts/config'));
});
使用默认的api网址:gulp build
'http://1.1.1.1:8082/'
使用gulp build --env=prod-org
'https://productionapplink.org/'
使用gulp build --env=prod-com
我希望这次对你有用!