Gruntjs 从task.run传递Grunt配置选项

Gruntjs 从task.run传递Grunt配置选项,gruntjs,Gruntjs,尝试了一些事情,但似乎无法让它工作,但我会认为这是一个相当简单的事情。我试图在任务运行时将变量|选项传递到Grunt initialize配置中 目前,我有两个单独的配置: sass: { dev: { options: { style: 'expanded' }, files: [{ expand: true, cwd: source + 'scss/', src: '*.scss', dest: dest

尝试了一些事情,但似乎无法让它工作,但我会认为这是一个相当简单的事情。我试图在任务运行时将变量|选项传递到Grunt initialize配置中

目前,我有两个单独的配置:

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传递到初始化配置。有没有咕噜专家知道怎么做?谷歌似乎也没有答案。。。不确定我是不是走错路了

谢谢你的帮助

看——这正是你想要的

$ 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');
    }
});

我想这一定是我上面提到的东西。

我想他的问题是,是否有必要抽象配置,这样他就不需要两次使用相同的配置,唯一的区别是样式选项