Vue cli 3 - отчеты о кодах Нью-Йорка в Стамбуле, не включая файлы vue - PullRequest
0 голосов
/ 30 октября 2018

Я часами пытаюсь подготовить и запустить отчеты о покрытии кода в Стамбуле для моего нового проекта 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', хотя это приводит к ошибке, указывающей, что включенные пути не являются абсолютными.

...