2016-05-10 4 views
0

目的:jshintの実行結果をコンソール(開発中の場合)またはファイル(Jenkinsでリリースされている場合)に出力するようflexを実行する。grunt-contrib-jshintの異なるオプションを使用して複数のターゲットを実行する方法

それは可能ですか?私は自分のjshint設定に個々のターゲットを追加することができますが、私のオプションはすべてレポーターの詳細を除いて同じです。だから、それらを複製しないといいのです。 "all"から連結を行い、グローバルオプションのすべてと、呼び出されるターゲットの特定のオプションを使用する必要があります。どうやって?

jshint.js:

module.exports = { 
    options: { 
     node: true, 
     browser: true, 
     blah: blah... 
    }, 
    all: [ 
     'Gruntfile.js', 
     '<%= yeoman.app %>/modules/**/*.js', 
     '<%= yeoman.app %>/*.js' 
    ], 
    dev: { 
     options: { 
      reporter: 'checkstyle' 
     } 
    } 
    release: { 
     options: { 
      reporter: 'checkstyle', 
      reporterOutput: 'myfile.xml' 
     } 
    } 
}; 

答えて

0

私は可変ルートに行きましたが、ファイルソースにこれを使用し、ターゲットで必要なオプションを上書きしました。私は読んでいた他のものに基づいて

var files = [ 
    'Gruntfile.js', 
    '<%= yeoman.app %>/modules/**/*.js', 
    '<%= yeoman.app %>/*.js' 
]; 

module.exports = { 
    options: { 
     reporter: require('jshint-stylish'), 
     node: true, ... 
    }, 
    dev: { 
     src: files 
    }, 
    release: { 
     src: files, 
     options: { 
      reporter: 'checkstyle', 
      reporterOutput: 'myfile.xml', 
      reporterOutputRelative: false 
     } 
    } 
} 

、私はデフォルトのオプションは、ターゲットで作業してオーバーライドできるようになるとは思いませんでした、と私はまた、ファイルの問題に遭遇していたが、これはすべてを解決しました。

0

私は、これは、あなたがコードを向上させることができ、そのほんの一例をあなたを助けることができると思います。

インストール:作男-contribの-jshint

Gruntfile.js

//Jshint ===============================  
      var jshint; 
      config.jshint = jshint ={}; 


      jshint.dist = { 
       options: {jshintrc: ".jshintrc"}, 
       files: {all: ["lib/main.js","lib/test.js"]} 
      }; 

      jshint.dev = { 
       options: {jshintrc: ".jshintrc.dev"}, 
       files: {all: ["lib/main.js","lib/test.js"]} 
      }; 

.jshintrc

{ 
     "strict":true, 
     "laxcomma":true, 
     "sub":true 
} 

.jshintrc.dev

{ 
     "strict":true, 
     "laxcomma":true, 
     "sub":true, 
     "debug":true 
} 
0

次の2つのターゲットの間で同じになりますオプションのサブセットを持っている場合は、オブジェクトの変数を作成し、両方のターゲットのoptionキーに値を割り当てることができます。

var reporterOptions = { 
     foo: 'red', 
     bar: 'green', 
     baz: 'blue' 
    }; 

    module.exports = { 
     options: { 
      node: true, 
      browser: true, 
      blah: blah... 
     }, 
     all: [ 
      'Gruntfile.js', 
      '<%= yeoman.app %>/modules/**/*.js', 
      '<%= yeoman.app %>/*.js' 
     ], 
     dev: { 
      options: reporterOptions 
     } 
     release: { 
      options: reporterOptions 
     } 
    }; 

あなたがしたい場合は1つの場所でオプション値を維持しますが、どのオプションがどのターゲットに適用されるかを選択的に決定したい場合は、ドット表記法を使用して変数に格納されている値を参照できます。

var reporterOptions = { 
    foo: 'red', 
    bar: 'green', 
    baz: 'blue' 
}; 

module.exports = { 
    options: { 
     node: true, 
     browser: true, 
     blah: blah... 
    }, 
    all: [ 
     'Gruntfile.js', 
     '<%= yeoman.app %>/modules/**/*.js', 
     '<%= yeoman.app %>/*.js' 
    ], 
    dev: { 
     options: { 
      foo: reporterOptions.foo 
      bar: reporterOptions.bar 
     } 
    } 
    release: { 
     options: { 
      foo: reporterOptions.foo 
      baz: reporterOptions.baz 
     } 
    } 
}; 
+0

ああ、面白いです。それでは、どのようにして、リリースとdevの間でユニークなオプションを処理しますか? – whatsTheDiff

+0

あなたのコメントに基づいて答えが更新されました。変数にターゲット間で共有したいすべてのオプションを格納し、特定のターゲットのオプションの値を定義するときは、ドット表記 – theaccordance

+0

IMOを使用して変数に格納されている値を参照してください。さまざまなターゲットの間で共有することができますが、それぞれ独自の – theaccordance

関連する問題