Karma 中的前置處理器允許您在檔案被提供給瀏覽器之前對其進行一些處理。這些設定位於設定檔的 preprocessors
區塊中
preprocessors: {
'**/*.coffee': ['coffee'],
'**/*.tea': ['coffee'],
'**/*.html': ['html2js']
},
window.__html__['template.html']
的方式參考。 了解更多。base/
。請參閱 問題 788 中的討論。以下是如何將 CoffeScript 前置處理器添加到測試套件的範例
# 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
設定中指定的檔案。
例如,路徑 /my/absolute/path/to/test/unit/file.coffee
與鍵 **/*.coffee
匹配將返回 true
,但與僅 *.coffee
匹配將返回 false
,並且前置處理器將不會在 CoffeeScript 檔案上執行。
如果一個檔案僅匹配前置處理器設定物件中的一個鍵,則 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'
。如果兩個列表相互矛盾,例如
preprocessors: {
'*.js': ['a', 'b'],
'a.*': ['b', 'a']
}
那麼 karma 將任意選擇一個列表優先於另一個列表。在像
preprocessors: {
'*.js': ['a', 'b', 'c'],
'a.*': ['c', 'b', 'd']
}
的情況下,那麼 'a'
肯定會先執行,'d'
肯定會最後執行,但 karma 是先執行 'b'
還是 'c'
是任意的。