Vue CLI 3-纽约市伊斯坦布尔代码报告不包括Vue文件

时间:2018-10-30 14:56:42

标签: vuejs2 istanbul lcov vue-cli-3 nyc

我已经尝试了几个小时,以便为使用vue-cli v3生成的新vue(基于打字稿)项目启动并运行伊斯坦布尔代码覆盖率报告。

每当我运行测试时:(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.instrumentnyc.sourceMap设置为false,以允许在webpack配置中使用自定义加载程序,如下所示:

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],尽管我不知道它应该是什么。我正在基于以下链接进行此操作:their documentation,应该在其中添加'src',尽管它会导致错误,指出所包含的路径不是绝对路径。

0 个答案:

没有答案