Я часами пытаюсь подготовить и запустить отчеты о покрытии кода в Стамбуле для моего нового проекта vue (на основе машинописи), созданного с помощью vue-cli v3.
Всякий раз, когда я запускаю свои тесты: (nodemon --exec nyc vue-cli-service test:unit
) включаются только файлы .ts, хотя я специально установил, что nyc должен включать эти файлы:
Package.json
"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
значение 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 config вместо package.json это приводит к тому, что файлы вообще не включаются:
Vue.config.js с цепочкой Webpack вместо configureWebpack
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'
, хотя это приводит к ошибке, указывающей, что включенные пути не являются абсолютными.