/cypress-webpack-preprocessor

Cypress preprocessor for bundling JavaScript via webpack

Primary LanguageJavaScriptMIT LicenseMIT

Cypress Webpack Preprocessor CircleCI semantic-release

Cypress preprocessor for bundling JavaScript via webpack

Installation

Requires Node version 6.5.0 or above.

npm install --save-dev @cypress/webpack-preprocessor

Usage

In your project's plugins file:

const webpack = require('@cypress/webpack-preprocessor')

module.exports = (on) => {
  on('file:preprocessor', webpack())
}

Options

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))
}

webpackOptions

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',
            ],
          },
        }],
      },
    ],
  },
}

watchOptions

Object of options for watching. See webpack's docs.

Default: {}

Modifying default options

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))
}

Compatibility

  • 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)

Contributing

Run all tests once:

npm test

Run tests in watch mode:

npm run test-watch

License

This project is licensed under the terms of the MIT license.