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'
或反之亦然是任意的。