【问题标题】:How can I pass argument with parameter to gulp?如何将带参数的参数传递给 gulp?
【发布时间】:2015-02-05 20:41:45
【问题描述】:

我想做类似的事情

gulp build --param1=abc

我希望这个参数在 Angular 服务/控制器中可用。 有什么办法可以做到吗?

【问题讨论】:

标签: angularjs gulp


【解决方案1】:

是的。我建议在您的 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
});

【讨论】:

  • @ap_snitch :这能回答你的问题吗?
猜你喜欢
  • 1970-01-01
  • 2015-04-16
  • 1970-01-01
  • 2015-02-17
  • 1970-01-01
  • 1970-01-01
  • 2019-03-10
  • 2019-09-27
相关资源
最近更新 更多