Karmaのプリプロセッサを使用すると、ファイルがブラウザに提供される前に、ファイルに対して何らかの処理を実行できます。これらは、設定ファイルのpreprocessors
ブロックで設定されます。
preprocessors: {
'**/*.coffee': ['coffee'],
'**/*.tea': ['coffee'],
'**/*.html': ['html2js']
},
window.__html__['template.html']
として参照する必要があることに注意してください。詳細はこちら。base/
を追加する必要があります。issue 788の議論を参照してください。テストスイートに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
設定と設定ファイルのディレクトリに基づいて、絶対パスに展開されます。詳細については、ファイルを参照してください。たとえば、パス/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'`の前に実行するかどうかは任意です。