2013-10-15 7 views
6

私はいくつかのnpmモジュールを持っていますが、これは一般的なリンキング設定を使用したいと思います。私はjshintを持っていて、Gruntを介して単一のプロジェクトに取り組んでいます。しかし、プロジェクトごとに.jshintignoreファイルと.jshintrcファイルをコピー/貼り付けすることは、特に何かを変更する必要がある場合には扱いにくくなります。だから、理想的に私は、共通の構成をカプセル化し、grunt-my-common-lint-tasksが本当にjshintとクロージャリンターの両方のためだけに特定のデフォルト設定であるGrunt:別のマルチタスクプラグインとして2つのマルチタスクを作成するには?

grunt.loadNpmTasks('grunt-mysuperlint'); 

介してロードすることができ、単一の単調なタスクを持っているしたいと思います。

しかし、唯一の本当の構成がオプションとターゲットのマージである2つの既存のグラントプラグインを1つに構成する方法はありません。

これは可能ですか?

grunt.registerMultiTask('mysuperlint', function() { 
    // Manual options merging? 
    var opts = this.options({ 
     jshint: { src: 'scripts/**/*.js', options: { ... } }, 
     closureLinter: { src: 'scripts/**/*.js', options: { ... } } 
    }); 
    grunt.config.set('jshint.dev', opts.jshint); 
    grunt.config.set('closureLinter.dev', opts.closureLinter); 
    grunt.task.run('jshint:dev'); 
    grunt.task.run('closureLinter:dev'); 
}); 

任意のヘルプやポインタが本当にいただければ幸いです。

は、私のような何かを行うことになっています。

+2

基本的にこのスニペットはきれいに見えます。何が問題ですか? –

+2

当時はとてもハッキリだったようです。 – Andrew

+0

残念ながら、彼らはまだ良いAPIを構築していませんでした。次のより大きなリリースのための議論にあった –

答えて

0

これはあなたの質問に直接答えるものではありませんが、私はあなたの元の問題の単純なトリックを提案することができます: グローバルな.jshintignoreファイルを1つ持ち、各プロジェクトからソフトリンクできます。 これはハックのようですが、それは簡単です