I am structuring a monorepo that will contain all the single components of a UI kit built with React.
I am using lerna because I have no experience with monorepo/multi packages configuration, now I have this structure:
index.js
packages/
pack1/
pack2/
I want to build every package with webpack
but want to use only a single webpack.config.js
in the root folder and a single command to create a pack*.dist.js
in every package directory.
Is it possible? Any direction?
The question is rather general an open-ended, but here's a start.
I want to build every package with webpack but want to use only a single webpack.config.js in the root folder and a single command to create a pack*.dist.js in every package directory.
Is it possible? Any direction?
Yes, its possible. You need to list pack1
and pack2
as an entry
in your webpack.config.js
file. You probably want to bundle all common third party and in-house dependencies in a vendor bundle too.
With a webpack config such as:
let entries = {
pack1: 'path/to/entry/point/pack1',
pack2: 'path/to/entry/point/pack2'
};
export default {
entry: { ...entries },
module: {
rules: [
{
// ... usual rule config props
include: [
'/path/to/pack1/src-for-rule',
'/path/to/pack2/src-for-rule'
]
}
]
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
chunks: Object.keys(entries),
minChunks: (module) => {
return /node_modules/.test(module.context);
}
}),
new webpack.optimize.CommonsChunkPlugin({
name: 'common',
chunks: Object.keys(entries),
minChunks: Object.keys(entries).length
})
]
}
How you weave together the bundles into an "app" is up to you.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With