如何使用load-grunt-config将参数传递给外部文件中定义的grunt任务?

时间:2016-10-11 10:14:14

标签: javascript parameters gruntjs external

我的第一篇文章,请好心的^^
我正在使用Grunt和load-grunt-config将我的任务设置拆分成几个文件,如果我使用这种设置,这个工作正常:

./ Gruntfile.js

module.exports = function(grunt) {
  var path = require('path');
  var myParam = grunt.option('myParam') || 'responsive';
  // Project configuration.
  grunt.initConfig({
    ...
    require('load-grunt-config')(grunt);
    ...
  });
  ...
};

./ grunt / concat.js

var conf = require('../mytheme.config.json');
module.exports = {
  dist: {
    src: conf.theme.js.src,
    dest: conf.theme.js.dist + 'mytheme.bundle.js',
    options: {
    }
  }
};

我的问题如下:如何将'myParam'var传递给'concat.js'文件中的外部配置?

我不明白如何使用https://github.com/creynders/load-grunt-configs

中的文档进行操作

由于

2 个答案:

答案 0 :(得分:0)

好的,我找到了适合我的东西:

<强> ./ Gruntfile.js

module.exports = function(grunt) {
  // Define 
  var myParam = grunt.option('myParam') || 'responsive';

  // Plugins
  require('time-grunt')(grunt);
  require('jit-grunt')(grunt);
  require('load-grunt-config')(grunt, {
    configPath: path.join(process.cwd(), 'grunt/config'),
    jitGrunt: {
      customTasksDir: 'grunt/tasks'
    },
    data: {
      myParam: myParam // accessible with '<%= myParam %>'
    }
  });
};

<强> ./咕噜/配置/ concat.js

var conf = require('../../mytheme.config.json');
module.exports = {
  dist: {
    src: conf.theme.js.src,
    dest: conf.theme.js.dist + '<%= myParam %>/mytheme.bundle.js',
    options: {
    }
  }
};

希望它也会帮助别人。

答案 1 :(得分:0)

concat.js上,您可以返回一个函数,然后传递参数myParam

// Gruntfile.js ...
// ____________________> 
module.exports = function(grunt) {
  var path = require('path');
  var concat = require('./concat');
  var myParam = grunt.option('myParam') || 'responsive';

  concat.test(myParam);

  // Project configuration.
  grunt.initConfig({
    ...
    require('load-grunt-config')(grunt);
    ...
  });
  // ...
};

// concat.js ...
// ____________________> 
module.exports = {
    test: function(param){
        console.log(param); // logs myParam
        switch(param){
            case 'responsive':
                // do something (responsive)
                break;
            case 'mobile':
                // do something (mobile)
                break;
            default:
                // do something (default)
                break;
        }
    }
};