webpack-inherit v1.8.92
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 )
@import "App/modules/*.module.scss"; // 1 import to rulz them all
Namespace you're application
So you can stop using easily broken relative imports :
// import stuff from "../../../config"; // no more
import 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
export default class MyOverrided extend $super{
//...
}
@import "$super";
// do some css additions
.theSameWithA{
backgroud : red;
}
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...
Check the samples here
Draft doc here
Caveats / 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 ?
Become a sponsor!
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago