istanbul-instrumenter-loader

webpack 的 Istanbul instrumenter loader

npm deps

通过 istanbul-lib-instrument 监测 JS 文件,以便生成代码覆盖率报告。

安装

npm install --save-dev istanbul-instrumenter-loader
# or
yarn add --dev istanbul-instrumenter-loader

配置

参考

项目结构

假设你的项目结构如下:

├── src/
│   └── components/
│       ├── bar/
│       │   └── index.js
│       └── foo/
│           └── index.js
└── test/
    └── src/
        └── components/
            └── foo/
                └── index.js

为生成所有组件(包括你没写测试的那些)的代码覆盖率报告,你需要 require 所有业务测试的代码。相关内容在 karma-webpack 其他用法中有涉及。

test/index.js

// require 所有 `project/test/src/components/**/index.js`
const testsContext = require.context('./src/components/', true, /index\.js$/);

testsContext.keys().forEach(testsContext);

// require 所有 `project/src/components/**/index.js`
const componentsContext = require.context('../src/components/', true, /index\.js$/);

componentsContext.keys().forEach(componentsContext);

以下为 Karma 的唯一入口起点文件。

karma.conf.js

config.set({
    …
    files: [
        'test/index.js'
    ],
    preprocessors: {
        'test/index.js': 'webpack'
    },
    webpack: {
        …
        module: {
            rules: [
                // 用 Istanbul 只监测业务代码
                {
                    test: /\.js$/,
                    include: path.resolve('src/components/'),
                    loader: 'istanbul-instrumenter-loader'
                }
            ]
        }
        …
    },
    reporters: [ 'progress', 'coverage-istanbul' ],
    coverageIstanbulReporter: {
        reports: [ 'text-summary' ],
        fixWebpackSourcePaths: true
    },
    …
});

配置选项

此 loader 支持 istanbul-lib-instrument 的所有配置选项。

License

MIT


原文:https://webpack.js.org/loaders/istanbul-instrumenter-loader/

results matching ""

    No results matching ""