Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/team-griffin/webpack-dedupe-plugin


https://github.com/team-griffin/webpack-dedupe-plugin

Last synced: about 1 month ago
JSON representation

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.