2015-02-05 88 views
1

我想要做這樣的事情如何通過參數傳遞參數來吞噬?

gulp build --param1=abc 

,我想這個參數去在角服務/控制器提供。 有沒有一種方法可以做到這一點?

+0

你的角度服務/控制器的含義是什麼? – 2015-02-05 21:37:43

+0

@YangLi我希望能夠在AngularJS服務中使用'abc'值。 現在我已經管道文件中的值,並在我的服務中用$ http導入該文件。我不確定是否有更好的方法。 – 2015-02-05 21:44:06

+0

可能重複[是否可以傳遞一個標誌給Gulp讓它以不同的方式運行任務?](http://stackoverflow.com/questions/23023650/is-it-possible-to-pass-a-flag對不同方式運行任務) – Louis 2015-12-14 17:05:04

回答

5

是的。我會建議你在Gulp配置中創建一個可以注入到應用程序任何部分的Angular常量。現在

var ngConstant = require('gulp-ng-constant'); 
var args = require('yargs').argv; 

gulp.task('constant', function() { 
    var selectedConstant = args.env || 'dev'; // if --env is not declared, assume dev 
    var constants = { 
    dev: { 
     ENV: { 
     'api': 'api.someUrl.com', 
     'url': 'dev.url.com' 
     } 
    }, 
    prod: { 
     ENV: { 
     'api': 'api.someUrl.com', 
     'url': 'dev.url.com' 
     } 
    }, 
    }; 

    return ngConstant({ 
     name: 'app', // name of your module 
     constants: constants[selectedConstant], 
     stream: true 
    }) 
    .pipe(gulp.dest('src')); 
}); 

gulp.task('build', function() { 
    runSequence(
    ['constant'] 
) 
}); 

,您可以運行gulp build --env=prod,這將在您的/src/文件夾中創建一個名爲constants.js文件(或任何你指定)。現在將此文件包含在您的index.html中。

您現在可以在服務或控制器中的任何位置注入常量ENV並引用其中的變量。

angular.module('app') 

.service('SomeService', function(ENV) { 
    // access ENV vars here 
}); 

.controller('SomeCtrl', function($scope, ENV) { 
    // access ENV vars here 
}); 
+0

@ap_snitch:這是否回答你的問題? – mcranston18 2015-02-09 18:21:00