Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/team-griffin/webpack-dedupe-plugin
https://github.com/team-griffin/webpack-dedupe-plugin
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/team-griffin/webpack-dedupe-plugin
- Owner: team-griffin
- Created: 2019-03-28T13:07:36.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-10-29T17:37:35.000Z (about 5 years ago)
- Last Synced: 2024-11-13T16:50:46.708Z (about 1 month ago)
- Language: JavaScript
- Size: 80.1 KB
- Stars: 0
- Watchers: 2
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# @team-griffin/webpack-dedupe-plugin
[![npm version](https://badge.fury.io/js/%40team-griffin%2Fwebpack-dedupe-plugin.svg)](https://badge.fury.io/js/%40team-griffin%2Fwebpack-dedupe-plugin)
```sh
yarn add --dev @team-griffin/webpack-dedupe-plugin
npm i --save-dev @team-griffin/webpack-dedupe-plugin
pnpm i --save-dev @team-griffin/webpack-dedupe-plugin
```*Note:* This project currently has webpack v4 as a peer dependency
## Why?
So node package managers such as yarn & npm cause a tonne of duplicate dependecies across child dependencies when your top level's dependency does not match.
An example of this is:```
App:
-- [email protected]
-- B:
-- [email protected]
-- C:
-- [email protected]
```Due to how node's require algorithm works package managers are until to dedupe these packages, therefore you'll end up with 2 instances of [email protected] in your webpack bundle.
## Usage
This plugin isn' a traditional webpack plugin due to really being a wrapper around an existing webpack plugin (NormalModuleReplacementPlugin).
```js
const createDedupe = require('@team-griffin/webpack-dedupe-plugin');...
// webpack plugins
plugins: [
createDedupe(),
],```
## How does it work?
We leverage the webpack plugin `NormalModuleReplacementPlugin` to look at each import and replace any deduplicates with a "master".
Currently this only works on exact version matches.