几个小时以来,我一直在尝试为我的新vue(基于typescript)项目启动并运行伊斯坦布尔代码覆盖率报告,该项目是用vue cli v3生成的。
每当我运行测试时:(
nodemon --exec nyc vue-cli-service test:unit
)仅包括.ts文件,即使我已明确规定纽约市应包括这些文件:
包装袋
"nyc": {
"check-coverage": true,
"per-file": true,
"lines": 80,
"instrument": true,
"sourceMap": true,
"statements": 80,
"functions": 80,
"branches": 80,
"include": [
"apollo-server/**/*.{ts,vue}",
"apollo-server/*.vue",
"src/**/*.{ts,vue}",
"src/*.vue"
],
"exclude": [
],
"reporter": [
"lcov",
"text",
"text-summary"
],
"extension": [
".ts",
".vue"
],
"cache": true,
"all": true
}
我也试过设置
nyc.instrument
和
nyc.sourceMap
若要允许Webpack配置中的自定义加载程序为false,请执行以下操作:
vue.config.js版本
module.exports = {
baseUrl: process.env.NODE_ENV === 'production'
? '/'
: '/',
configureWebpack: config => {
// if (process.env.NODE_ENV === "coverage") {
config = Object.assign(config, {
module: Object.assign(config.module, {
rules: config.module.rules.concat([
{
test: /\.(ts|tsx|vue)$/,
enforce: 'post',
include: [
path.resolve('src'),
path.resolve('apollo-server')
],
loader: 'istanbul-instrumenter-loader'
}
])
})
})
// }
}
我也试过用
vue.config.js > chainWebpack
钩子,当使用Vue配置而不是package.json时,它根本不会包含任何文件:
带有chainwebpack而不是configurewebpack的vue.config.js
chainWebpack: config => {
if (process.env.NODE_ENV === "coverage") {
config.module
.rule("istanbul")
.test(/\.(ts|tsx|vue)$/)
.enforce("post")
.pre()
.include
.add(__dirname + "/apollo-server")
.add(__dirname + "/src")
.end()
.use("istanbul-instrumenter-loader")
.loader("istanbul-instrumenter-loader")
.options({
esModules: true
})
.end()
}
}
可能是因为
__dirname + [filename]
我正在使用这个配置,虽然我不知道它还应该是什么。我这么做是基于这个链接:
https://github.com/vuejs/vue-cli/issues/1363
,我应该加上
'src'
,但会导致错误,指出包含的路径不是绝对路径。