Webpack plugin for better code pipelines & architectures.
Allows to easily namespace, compose, extend and build your Webpack projects using shared and versioned configs
This is solid beta; Feel free to test / feedback / make contribs
What you can do with it :
Split you're projects into multiple inheritable npm packages
So you can easily :
- inherit & share most of the code between projects
- Include or not layers like dev tools, admin, etc
- Switch between monorepo and npm dependencies structure
- Test layers independently
- Compile in 1 step, with the source map
Do glob require on inherited directories ( from local or node_modules packages )
So you can easily create/inherit modules & extensions and require them using :
import allModules from "App/modules/*.module.js";// or// import allModules from "App/modules/*/index.js";// or using es6 named exports// import AllActions from "App/store/(*)/actions.js";// or// import {MyCompByFileName} from "App/ui/components/(*).jsx"; // ( big import list to maintain ) no more ! :)// or// import {myFolder} from "App/ui/components/(**/*).jsx"; // ( walk & set myFolder/MyComp in myFolder.MyComp )
; // 1 import to rulz them all
Namespace you're application
So you can stop using easily broken relative imports :
// import stuff from "../../../config"; // no moreimport stuff from "App/config"; // aw yeah
Easily override inherited project
By enhancing / replacing any file
import $super from "$super";// require the 1st file with the same path name in the inherited packages // Add some stuff or HOCs fn extend $super//...
; // do some css additions .theSameWithA
Inherit, use & extend multiple webpack config from dependencies packages
So you can share, version, extend & switch your webpack conf & boilerplate via npm
Even more :
- Combine projects with different namespaces in 1 head package
- Easily override node_modules ( drop a module in a "lib directory" & dev/test you're patchs )
- Etc...
here
Check the sampleshere
Draft docCaveats / bugs ?
- Remember that devDependencies of dependencies are NOT installed so layers should only use (peer)Dependencies
- inherit deal with the deps resolving order, even if layers are in the libPath folder. That's said, when compiling for node the relative paths to the externals libs directories are hard written
- Context based webpack requires are not processed
- Actually requiring named export globs imply bigger HMR payload as all dependent components are reloaded
- This plugin probably need some optimisations
Improvements / todo
- Allow compiling inheritable packages code separately (slice the build)
- Optims
Contributors ?
Backers
Sponsors
Become a sponsor!