find-webpack
Utility to find webpack settings in react-scripts and other situations
Last updated 3 months ago by bahmutov .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install find-webpack 
SYNC missed versions from official npm registry.

find-webpack semantic-release Build status

Utility to find webpack settings in react-scripts and other situations

Use

npm i -S find-webpack
const fw = require('find-webpack')
const config = fw.getWebpackOptions()
// if config is an object, we found it!

Works with react-scripts and ejected react-scripts. Uses development environment.

Note: react-scripts assumes there is package.json file in the current working directory, otherwise it won't load.

tryLoadingWebpackConfig

Loading Webpack config from webpack.config.js might need NODE_ENV set, and other tricks.

const fw = require('find-webpack')
const config = fw.tryLoadingWebpackConfig('path/to/webpack.config.js')

Returns undefined if cannot load the config object.

Note: when loading the config object, this module sets process.env.BABEL_ENV and process.env.NODE_ENV to development and keeps it.

Cypress

There is a utility method for cleaning up the found Webpack config for using with Cypress webpack preprocessor: removing optimization plugins, etc.

const fw = require('find-webpack')
const config = fw.getWebpackOptions()
if (config) {
  // config is modified in place
  const opts = {
    reactScripts: true, // cleaning for react-scripts?
    coverage: true, // adds babel-plugin-istanbul
  }
  fw.cleanForCypress(opts, config)
}

If you are using opts.reactScripts = true, you can also add the component test folder to be transpiled using the same options as src folder.

const componentTestFolder = ... // from Cypress config
// config is modified in place
const opts = {
  reactScripts: true, // cleaning for react-scripts?
  addFolderToTranspile: componentTestFolder,
  coverage: true // adds babel-plugin-istanbul
}
fw.cleanForCypress(opts, config)

and you can add option looseModules: true to insert Babel plugin @babel/plugin-transform-modules-commonjs to allow mocking named imports.

addFolderToTranspile

This setting could be an individual folder or a list of folders. For example, you might want to transpile component test folder and fixture folder to allow requiring fixture files from tests.

const componentTestFolder = ... // from Cypress config
const fixtureFolder = ... // from Cypress config
// config is modified in place
const opts = {
  reactScripts: true, // cleaning for react-scripts?
  addFolderToTranspile: [componentTestFolder, fixtureFolder],
  coverage: true // adds babel-plugin-istanbul
}
fw.cleanForCypress(opts, config)

Debugging

Run with environment variable DEBUG=find-webpack to see verbose logs

About

Author

Gleb Bahmutov <gleb.bahmutov@gmail.com> © 2017

License

MIT - do anything with the code, but don't blame me if it does not work.

Current Tags

  • 2.2.0                                ...           latest (3 months ago)

30 Versions

  • 2.2.0                                ...           3 months ago
  • 2.1.0                                ...           4 months ago
  • 2.0.0                                ...           7 months ago
  • 1.15.2                                ...           7 months ago
  • 1.15.1                                ...           7 months ago
  • 1.15.0                                ...           7 months ago
  • 1.14.0                                ...           7 months ago
  • 1.13.0                                ...           7 months ago
  • 1.12.1                                ...           7 months ago
  • 1.12.0                                ...           8 months ago
  • 1.11.1                                ...           8 months ago
  • 1.11.0                                ...           8 months ago
  • 1.10.1                                ...           8 months ago
  • 1.10.0                                ...           8 months ago
  • 1.9.2                                ...           8 months ago
  • 1.9.1                                ...           8 months ago
  • 1.9.0                                ...           8 months ago
  • 1.8.0                                ...           8 months ago
  • 1.7.3                                ...           8 months ago
  • 1.7.2                                ...           8 months ago
  • 1.7.1                                ...           8 months ago
  • 1.7.0                                ...           8 months ago
  • 1.6.1                                ...           9 months ago
  • 1.6.0                                ...           9 months ago
  • 1.5.0                                ...           9 months ago
  • 1.4.0                                ...           9 months ago
  • 1.3.0                                ...           10 months ago
  • 1.2.0                                ...           10 months ago
  • 1.1.0                                ...           10 months ago
  • 1.0.0                                ...           10 months ago
Maintainers (1)
Downloads
Today 0
This Week 15
This Month 56
Last Day 2
Last Week 24
Last Month 144
Dependencies (3)
Dev Dependencies (2)

Copyright 2014 - 2017 © taobao.org |