To use components from bower you need to add two things to webpack:
bower_components folder.main field from the bower.json file.See configuration resolve.modulesDirectories and list of plugins ResolverPlugin.
var path = require("path");
var webpack = require("webpack");
module.exports = {
resolve: {
modulesDirectories: ["web_modules", "node_modules", "bower_components"]
},
plugins: [
new webpack.ResolverPlugin(
new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin(".bower.json", ["main"])
)
]
}
In many cases modules from npm are better than the same module from bower. Bower mostly contain only concatenated/bundled files which are:
So prefer to use the CommonJs-style module and let webpack build it.
bower package vs. npm package
Note: the bower package is built with browserify and envify (
NODE_ENV = "production")
So we compare four configurations:
a) webpack + bower package (DefinePlugin makes no difference here as envify already removed debug code)
b) webpack + bower package + module.noParse for react
c) webpack + npm package
d) webpack + npm package + DefinePlugin with NODE_ENV = "production"
| configuration | modules | bundle size | compilation time |
|---|---|---|---|
| a) | 1 | 136k | 100% |
| b) | 1 | 136k | 73,6% |
| c) | 136 | 130k | 89,9% |
| d) | 135 | 127k | 85,3% |
(webpack 1.3.0-beta8, react 0.10.0, bundle size minimized)
© 2012–2015 Tobias Koppers
Licensed under the MIT License.
https://webpack.github.io/docs/usage-with-bower.html