Skip to content

Latest commit

 

History

History
54 lines (36 loc) · 2.18 KB

File metadata and controls

54 lines (36 loc) · 2.18 KB

WebpackCustomModuleIdsPlugin

Absolute control over module IDs in webpack bundles. Should support webpack versions 3 and 4 at least. Feel free to make a PR to support earlier versions.

npm version

Install

npm install custom-module-ids-webpack-plugin --save-dev

or yarn equivalent

yarn add custom-module-ids-webpack-plugin --dev

Usage

Simplest use case would look like:

var CustomModuleIdsPlugin = require('custom-module-ids-webpack-plugin');
...
plugins: [
...
new CustomModuleIdsPlugin({
	idFunction: function(libIdent, module) {
		...
	}
})
...
]

but in truth there's no limit to how complex the idFunction can get.

The plugin will filter out modules with no libIdent (ignored modules, required in entry point like babel polyfills usually are, etc). If you wish to have the function called for those modules anyway, just pass callWhenMissingLibident: true option. This will pass libIdent = null, but the second argument will still contain useful info.

Options

Name Type Default Description
idFunction {Function<(libIdent: String, module: Object) -> {primtive}>} Required. Function used to generate module IDs. The return will be used as module ID and should be a valid object key. libIdent argument is generated by calling module.libIdent() and should usually be path to the module file relative to the context. The second argument is a reference to the module object in case more info than just libIdent is needed.
callWhenMissingLibident {Boolean} undefined If set to true, plugin will call idFunction for modules that have no libIdent too. The function will be called with libIdent = null.
context {String} undefined Context path relative to which libIdent will be generated. If undefined, context from webpack config will be used.

But what do we do with this absolute power?

Use it with care. The plugin can be used to solve all kinds of issues not covered by more specific module id plugins but it's also extremely easy to break your bundles by not assigning unique IDs to modules.