Cypress preprocessor for bundling JavaScript via webpack
Requires Node version 6.5.0 or above.
npm install --save-dev @cypress/webpack-preprocessor
In your project's plugins file:
const webpack = require('@cypress/webpack-preprocessor')
module.exports = (on) => {
on('file:preprocessor', webpack())
}
Pass in options as the second argument to webpack
:
const webpack = require('@cypress/webpack-preprocessor')
module.exports = (on) => {
const options = {
// send in the options from your webpack.config.js, so it works the same
// as your app's code
webpackOptions: require('../../webpack.config'),
watchOptions: {},
}
on('file:preprocessor', webpack(options))
}
Object of webpack options. Just require
in the options from your webpack.config.js
to use the same options as your app.
Default:
{
module: {
rules: [
{
test: /\.jsx?$/,
exclude: [/node_modules/],
use: [{
loader: 'babel-loader',
options: {
presets: [
'babel-preset-env',
'babel-preset-react',
],
},
}],
},
],
},
}
Object of options for watching. See webpack's docs.
Default: {}
The default options are provided as webpack.defaultOptions
so they can be more easily modified.
If, for example, you want to update the options for the babel-loader
to add the stage-3 preset, you could do the following:
const webpack = require('@cypress/webpack-preprocessor')
module.exports = (on) => {
const options = webpack.defaultOptions
options.webpackOptions.module.rules[0].use[0].options.presets.push('babel-preset-stage-3')
on('file:preprocessor', webpack(options))
}
- webpack: 4.x+ (use
@cypress/webpack-preprocessor
1.x if you need webpack 2 or 3 support) - node: 8.2.1 minimum (aligned with Cypress 2.x)
Run all tests once:
npm test
Run tests in watch mode:
npm run test-watch
This project is licensed under the terms of the MIT license.