Webpack based boilerplate for producing libraries (Input: ES6, Output: universal library)
- Webpack based.
- ES6 as a source.
- Exports in a umd format so your library works everywhere.
- ES6 test setup with Mocha and Chai.
- Linting with ESLint.
ES6 source files
|
|
webpack
|
+--- babel, eslint
|
ready to use
library
in umd format
- Setting up the name of your library
- Open
webpack.config.js
file and change the value oflibraryName
variable. - Open
package.json
file and change the value ofmain
property so it matches the name of your library.
- Build your library
- Run
npm install
to get the project's dependencies - Run
npm run build
to produce minified version of your library.
- Development mode
- Having all the dependencies installed run
npm run dev
. This command will generate an non-minified version of your library and will run a watcher so you get the compilation on file change.
- Running the tests
- Run
npm run test
npm run build
- produces production version of your library under thelib
foldernpm run dev
- produces development version of your library and runs a watchernpm run test
- well ... it runs the tests :)
An example of using dependencies that shouldn’t be resolved by webpack, but should become dependencies of the resulting bundle
In the following example we are excluding React and Lodash:
{
devtool: 'source-map',
output: {
path: '...',
libraryTarget: 'umd',
library: '...'
},
entry: '...',
...
externals: {
react: 'react'
// Use more complicated mapping for lodash.
// We need to access it differently depending
// on the environment.
lodash: {
commonjs: 'lodash',
commonjs2: 'lodash',
amd: '_',
root: '_'
}
}
}