3

値の配列にすることができるオプションを持つgruntプラグインを書いています。値は具体的にはファイルです(タスク自体のfilesプロパティで指定されたファイルとは異なります)。私のタスク設定は次のようになります。

grunt.initConfig({
    assemble: {
      options: {
        data: ['test/common/data/common1.json', 'test/common/data/common2.json']
      },
      dev: {
        options: {
          data: ['test/dev/data/dev.json']
        },
        files: {
          'test/actual': ['test/files/dev.hbs']
        }
      },
      prod: {
        options: {
          data: ['test/prod/data/prod.json']
        },
        files: {
          'test/actual': ['test/files/prod.hbs']
        }
      },
    }

});

私のプラグインでは、グローバルオプションとターゲットオプションで指定されたすべてのファイルのリストを含むデータオプションを取得できるようにしたいと思います。

開発ターゲットの場合、grunt assemble:devこれは次のように表示されます。this.options.data

['test/common/data/common1.json',
 'test/common/data/common2.json',
 'test/dev/data/dev.json']

製品ターゲットの場合、grunt assemble:prodこれは次のように表示されます。this.options.data

['test/common/data/common1.json',
 'test/common/data/common2.json',
 'test/prod/data/prod.json']
4

1 に答える 1

2

私はこれを解決する方法を見つけましたが、それが最良の選択肢であるかどうかはわかりません。

私のプラグインでは、grunt.configメソッドを介してグローバルおよびターゲット固有のオプションにアクセスできます。

var globalDataFiles = grunt.config(['assemble', 'options', 'data']) || [];
var targetDataFiles = grunt.config(['assemble', this.target, 'options', 'data']) || [];

lodashを使用しています...var _ = require('lodash');

配列を結合できます:

var data = _.union(globalDataFiles, targetDataFiles);

プラグインでこれをもう少し実行しますが、それが最初にこの問題を解決する方法です。

すべてのコードを確認するには、 https://github.com/assemble/assemble/blob/master/tasks/assemble.jsをご覧ください。

于 2013-03-23T03:31:44.400 に答える