プリプロセッサ

Karmaのプリプロセッサを使用すると、ファイルがブラウザに提供される前に、ファイルに対して何らかの処理を実行できます。これらは、設定ファイルのpreprocessorsブロックで設定されます。

preprocessors: {
  '**/*.coffee': ['coffee'],
  '**/*.tea': ['coffee'],
  '**/*.html': ['html2js']
},

注記

この例では、「coffee」プリプロセッサを参照する複数の式があります。プリプロセッサは、複数のファイルパス式を指定する別の方法として、複数回リストできます。

注記

ほとんどのプリプロセッサは、プラグインとしてロードする必要があります。

利用可能なプリプロセッサ #

テストスイートにCoffeeScriptプリプロセッサを追加する方法の例を次に示します。

# Install it first with npm
$ npm install karma-coffee-preprocessor --save-dev

そして、設定ファイルの中で...

module.exports = function(config) {
  config.set({
    preprocessors: {
      '**/*.coffee': ['coffee']
    }
  });
};

もちろん、カスタムプラグインを作成することもできます!

設定済みプリプロセッサ #

一部のプリプロセッサは設定することもできます。

coffeePreprocessor: {
  options: {
    bare: false
  }
}

または、設定済みのプリプロセッサを定義します。

customPreprocessors: {
  bare_coffee: {
    base: 'coffee',
    options: {bare: true}
  }
}

ミニマッチング #

プリプロセッサ設定オブジェクトのキーは、files設定で指定されたファイルをフィルタリングするために使用されます。

  • 最初に、ファイルパスは、basePath設定と設定ファイルのディレクトリに基づいて、絶対パスに展開されます。詳細については、ファイルを参照してください。
  • 次に、新しく展開されたパスは、指定されたキーに対してminimatchを使用して照合されます。

たとえば、パス/my/absolute/path/to/test/unit/file.coffeeがキー**/*.coffeeと照合されるとtrueが返されますが、*.coffeeのみと照合されるとfalseが返され、プリプロセッサはCoffeeScriptファイルで実行されません。

実行順序 #

ファイルがプリプロセッサ設定オブジェクト内の1つのキーのみに一致する場合、karmaは対応する配列にリストされている順序で、そのファイルに対してプリプロセッサを実行します。たとえば、設定オブジェクトが

preprocessors: {
  '*.js': ['a', 'b']
}

の場合、karmaは'b'を実行する前に'a'を実行します。

ファイルが複数のキーと一致する場合、karmaは`config.preprocessor_priority`マップを使用して実行順序を制御します。 `config.preprocessor_priority`は、プロパティ名がプリプロセッサ名と等しく、プロパティ値が実行の優先順位と等しいオブジェクトである必要があります。優先順位の高いプリプロセッサが先に実行されます。デフォルトの優先順位は0です。

この設定オプションが設定されていない場合、karmaは妥当な順序でプリプロセッサを実行するために最善を尽くします。そのため、

preprocessors: {
  '*.js': ['a', 'b'],
  'a.*': ['b', 'c']
}

がある場合、`a.js`に対して、karmaは`'a'`、`'b'`、`'c'`の順に実行します。2つのリストが互いに矛盾する場合、たとえば

preprocessors: {
  '*.js': ['a', 'b'],
  'a.*': ['b', 'a']
}

のように、karmaは一方のリストを他方よりも優先するように任意に選択します。次のような場合

preprocessors: {
  '*.js': ['a', 'b', 'c'],
  'a.*': ['c', 'b', 'd']
}

では、`'a'`は必ず最初に実行され、`'d'`は必ず最後に実行されますが、karmaが`'b'`を`'c'`の前に実行するかどうかは任意です。