npm.devtool.tech
👏 You can access istanbul-instrumenter-loader package with using istanbulInstrumenterLoader variable in browser devtools!
Istanbul instrumenter loader for webpack

code/package/bundle size

0B
publish
0B
install
0B
bundle minified
0B
bundle gzipped

npm node deps tests coverage chat

Istanbul Instrumenter Loader

Instrument JS files with istanbul-lib-instrument for subsequent code coverage reporting

Install

npm i -D istanbul-instrumenter-loader

Usage

References

Structure

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

To create a code coverage report for all components (even for those for which you have no tests yet) you have to require all the 1) sources and 2) tests. Something like it's described in "alternative usage" of karma-webpack

test/index.js

// requires all tests in `project/test/src/components/**/index.js` const tests = require.context('./src/components/', true, /index\.js$/); tests.keys().forEach(tests); // requires all components in `project/src/components/**/index.js` const components = require.context('../src/components/', true, /index\.js$/); components.keys().forEach(components);

ℹ️ This file will be the only entry point for karma

karma.conf.js

config.set({ ... files: [ 'test/index.js' ], preprocessors: { 'test/index.js': 'webpack' }, webpack: { ... module: { rules: [ // instrument only testing sources with Istanbul { test: /\.js$/, use: { loader: 'istanbul-instrumenter-loader' }, include: path.resolve('src/components/') } ] } ... }, reporters: [ 'progress', 'coverage-istanbul' ], coverageIstanbulReporter: { reports: [ 'text-summary' ], fixWebpackSourcePaths: true } ... });

with Babel

You must run the instrumentation as a post step

webpack.config.js

{ test: /\.js$|\.jsx$/, use: { loader: 'istanbul-instrumenter-loader', options: { esModules: true } }, enforce: 'post', exclude: /node_modules|\.spec\.js$/, }

Options

The loader supports all options supported by istanbul-lib-instrument

NameTypeDefaultDescription
debug{Boolean}falseTurn on debugging mode
compact{Boolean}trueGenerate compact code
autoWrap{Boolean}falseSet to true to allow return statements outside of functions
esModules{Boolean}falseSet to true to instrument ES2015 Modules
coverageVariable{String}__coverage__Name of global coverage variable
preserveComments{Boolean}falsePreserve comments in output
produceSourceMap{Boolean}falseSet to true to produce a source map for the instrumented code
sourceMapUrlCallback{Function}nullA callback function that is called when a source map URL is found in the original code. This function is called with the source filename and the source map URL

webpack.config.js

{ test: /\.js$/, use: { loader: 'istanbul-instrumenter-loader', options: {...options} } }

Maintainers


Kir Belevich

Juho Vepsäläinen

Joshua Wiens

Michael Ciniawsky

Matt Lewis
🔎Explore Package🔎CDN Script

Score

Popularity29/100
Quality91/100
Maintenance18/100