web-dev-qa-db-ja.com

プログラムでうなり声タスクに引数を渡しますか?

他のうなり声タスクを呼び出すうなり声タスクがあります。プログラムで決定された引数でサブタスクを呼び出したいです。これは可能ですか? lib/grunt.jslib/grunt/task.jsを掘り下げて調べましたが、理解できませんでした。

Gruntfile.jsで指定された以下の引数でgrunt-compassを使用しています。

compass: {
  default_options: {
    src: 'components/201',
    dest: 'build',
    require: ['zurb-foundation']
  }
}

実行時にそれらをオーバーライドできるようにしたい:

tasks/my-task.js

// simplified example
module.exports = function(grunt) {
  grunt.registerTask('foo', 'bar', function() {
    var chooseDest = doWork();
    grunt.task.run('compass', {src: 'src', dest: chooseDest});
  });
};

参考のために:

$ grunt --version
grunt-cli v0.1.6
grunt v0.4.0rc6
46
Nick Heiner

私はそれを考え出した。使用 <%= %> Gruntfile.jsの構文:

compass: {
  default_options: {
    src: 'components/<%= myTask.src %>',
    dest: 'build',
    require: ['zurb-foundation']
  }
}

次に、タスクで設定できます。

grunt.config.set('myTask.src', getSrc());
58
Nick Heiner

すべてのGrunt設定を編集できます:

grunt.config('compass.default_options.src', 'blabla');

タスクを実行する直前。しかし、あなたの解決策は「よりクリーン」です。

3
Thomas Decaux