代码之家  ›  专栏  ›  技术社区  ›  Stan Hurks

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

  •  3
  • Stan Hurks  · 技术社区  · 6 年前

    几个小时以来,我一直在尝试为我的新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' ,但会导致错误,指出包含的路径不是绝对路径。

    0 回复  |  直到 6 年前
    推荐文章