programing

Vue cli 3 - NYC 이스탄불 코드가 vue 파일을 포함하지 않음

newsource 2022. 9. 29. 00:22

Vue cli 3 - NYC 이스탄불 코드가 vue 파일을 포함하지 않음

vue-cli v3에서 생성된 새로운 vue(타이프스크립트 기반) 프로젝트의 이스탄불 코드 적용 범위 보고서를 작성 및 실행하려고 몇 시간 동안 노력하고 있습니다.

테스트를 실행할 때마다: (nodemon --exec nyc vue-cli-service test:unit.ts 파일만 포함되어 있습니다.nyc에는 이러한 파일이 포함되도록 특별히 설정되어 있습니다만,

패키지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를 사용할 수 있습니다.json 파일이 전혀 포함되지 않습니다.

config Webpack 대신 chain Webpack을 사용하는 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'단, 포함된 경로가 절대 경로가 아님을 나타내는 오류가 발생합니다.

언급URL : https://stackoverflow.com/questions/53067148/vue-cli-3-nyc-istanbul-code-reports-not-including-vue-files