What is istanbul-instrumenter-loader?
The 'istanbul-instrumenter-loader' is a webpack loader that instruments JavaScript files with Istanbul coverage, which is useful for generating code coverage reports for your tests.
What are istanbul-instrumenter-loader's main functionalities?
Instrumenting JavaScript files
This feature allows you to instrument JavaScript files for code coverage. The code sample shows how to configure webpack to use 'istanbul-instrumenter-loader' for all JavaScript files in the 'src/' directory.
module.exports = {
module: {
rules: [
{
test: /\.js$/,
include: path.resolve('src/'),
loader: 'istanbul-instrumenter-loader',
options: { esModules: true }
}
]
}
};
Using with Babel
This feature demonstrates how to use 'istanbul-instrumenter-loader' in conjunction with 'babel-loader' to transpile and instrument JavaScript files. The code sample shows the configuration for webpack to use both loaders.
module.exports = {
module: {
rules: [
{
test: /\.js$/,
include: path.resolve('src/'),
use: [
'babel-loader',
{
loader: 'istanbul-instrumenter-loader',
options: { esModules: true }
}
]
}
]
}
};
Other packages similar to istanbul-instrumenter-loader
babel-plugin-istanbul
The 'babel-plugin-istanbul' is a Babel plugin that instruments your code with Istanbul coverage. It is similar to 'istanbul-instrumenter-loader' but is used as a Babel plugin instead of a webpack loader. This can be more convenient if you are already using Babel for transpilation.
nyc
The 'nyc' package is a command-line interface for Istanbul. It provides a more comprehensive solution for code coverage, including running tests and generating reports. Unlike 'istanbul-instrumenter-loader', which is a webpack loader, 'nyc' can be used independently of webpack.
Istanbul instrumenter loader for webpack
Instrument JS files with Istanbul for subsequent code coverage reporting.
"Forked" from unfold/istanbul-instrument-loader.
Install
$ npm i -D istanbul-instrumenter-loader
Usage
Useful to get work together karma-webpack and karma-coverage. For example:
- karma-webpack config
- karma-coverage config
- replace
karma-coverage
's code instrumenting with istanbul-instrumenter-loader
's one:
config.set({
...
files: [
'test/**/*.js'
],
...
preprocessors: {
'test/**/*.js': [ 'webpack' ]
},
reporters: [ 'progress', 'coverage' ],
coverageReporter: {
type: 'html',
dir: 'coverage/'
},
...
webpack: {
...
module: {
loaders: [ ... ],
postLoaders: [ {
test: /\.js$/,
exclude: /(test|node_modules|bower_components)\//,
loader: 'istanbul-instrumenter'
} ]
},
...
}
});
Documentation: Using loaders.
License
WTFPL