Skip to content
This repository was archived by the owner on Jan 31, 2023. It is now read-only.

cypress-io/cypress-browserify-preprocessor

Repository files navigation

Cypress Browserify Preprocessor

Cypress preprocessor for bundling JavaScript via browserify

Installation

Requires Node version 6.5.0 or above.

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

Usage

In your project's plugins file:

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

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

Options

Pass in options as the second argument to browserify:

module.exports = (on) => {
  const options = {
    // options here
  }

  on('file:preprocessor', browserify(options))
}

browserifyOptions

Object of options passed to browserify.

If you pass one of these top-level options in, it will override the default. So if pass extensions: ['.cljs'], the default extensions (js, jsx, coffee, cjsx) will no longer be supported. If you wish to add to the supported extensions, read up on modifying the default options.

As long as the config passed from Cypress indicates that the plugin should watch files, watchify is automatically configured as a plugin, so there's no need to manually specify it.

Default:

{
  extensions: ['.js', '.jsx', '.coffee', '.cjsx'],
  transform: [
    [
      'cjsxify',
      {},
    ],
    [
      'babelify',
      {
        ast: false,
        babelrc: false,
        plugins: ['babel-plugin-add-module-exports'],
        presets: ['babel-preset-env', 'babel-preset-react'],
      },
    ],
  ],
  plugin: [],
  cache: {},
  packageCache: {},
}

watchifyOptions

Object of options passed to watchify

Default:

{
  ignoreWatch: [
    '**/.git/**',
    '**/.nyc_output/**',
    '**/.sass-cache/**',
    '**/bower_components/**',
    '**/coverage/**',
    '**/node_modules/**',
  ],
}

onBundle

A function that is called with the browserify bundle. This allows you to specify external files and plugins. See the browserify docs for methods available.

browserify({
  onBundle (bundle) {
    bundle.external('react')
    bundle.plugin('some-plugin')
  }
})

Default: undefined

Modifying default options

The default options are provided as browserify.defaultOptions so they can be more easily modified.

If, for example, you want to update the options for the babelify transform to turn on babelrc loading, you could do the following:

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

module.exports = (on) => {
  const options = browserify.defaultOptions
  options.transforms[1].options.babelrc = true

  on('file:preprocessor', browserify(options))
}

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.

About

Cypress preprocessor for bundling JavaScript via browserify

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Contributors 15