ng-constant多环境的gulp任务

时间:2016-10-31 03:43:43

标签: javascript angularjs gulp

我一直试图让这个工作,也许我错过了一些东西。我正在使用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')
});

1 个答案:

答案 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

我希望这次对你有用!