从task.run传递Grunt配置选项

时间:2013-12-03 09:25:30

标签: gruntjs

尝试了一些事情,但似乎无法让它发挥作用,但我认为这很简单。我正在尝试在运行任务时将变量|选项传递给Grunt初始化配置。

在那一刻我有两个单独的配置:

sass: {
  dev: {
    options: {
      style: 'expanded'
    },
    files: [{
      expand: true,
      cwd: source + 'scss/',
      src: '*.scss',
      dest: destination + 'css',
      ext: '.css'
    }]
  },
  production: {
    options: {
      style: 'compressed'
    },
    files: [{
      expand: true,
      cwd: source + 'scss/',
      src: '*.scss',
      dest: destination + 'css',
      ext: '.css'
    }]
  }
}

如您所见,除样式选项外,它们是相同的。我想做的是:

sass: {
  build: {
    options: {
      style: style
    },
    files: [{
      expand: true,
      cwd: source + 'scss/',
      src: '*.scss',
      dest: destination + 'css',
      ext: '.css'
    }]
  }
}

...

grunt.registerTask("sass", function () {
  grunt.task.run('sass:build:style=expanded');
});

但我无法弄清楚如何以这种方式将选项从grunt.task.run传递给initialize配置。任何Grunt专家都知道如何做到这一点?谷歌似乎也没有答案......不确定我是否接近这个错误?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

请参阅Grunt API example - 这正是您要找的内容。

$ grunt --type=dev

现在您可以通过以下方式获得此值:

grunt.registerTask('default','description...', function() {
    var type = grunt.option('type') || 'dev'; //if nothing passed from cli set to 'dev'
    if (type == 'dev') {
        grant.task.run('sass:dev');
    } else if (type == 'production') {
        grant.task.run('sass:production');
    }
});

我认为它必须像我上面提到的那样......