# rollup-plugin-peer-deps-external

> Rollup plugin to automatically add a library's peerDependencies to its bundle's external config.

Latest version **2.2.4** (published 2020-10-20) · MIT license · 0 weekly downloads

## Install

```sh
npm install rollup-plugin-peer-deps-external
pnpm add rollup-plugin-peer-deps-external
yarn add rollup-plugin-peer-deps-external
bun add rollup-plugin-peer-deps-external
```

## Health

**Score 28/100 (F)** — status: abandoned.

Positive: has types package; esm support; no vulnerabilities; high quality score.

Warnings: low downloads.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.2.4 |
| Published | 2020-10-20 |
| First published | 2017-04-12 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | separate (@types/rollup-plugin-peer-deps-external) |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Unpacked size | 69.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 111 |
| Maintainers | pmowrer |
| Keywords | rollup, plugin, rollup-plugin, peerDependencies, external, optimize, exclude |

## Links

- npm: https://www.npmjs.com/package/rollup-plugin-peer-deps-external
- Repository: https://github.com/pmowrer/rollup-plugin-peer-deps-external
- Homepage: https://github.com/pmowrer/rollup-plugin-peer-deps-external#readme
- Issues: https://github.com/pmowrer/rollup-plugin-peer-deps-external/issues
- npm.io page: https://npm.io/package/rollup-plugin-peer-deps-external

## Alternatives

- [raw-loader](https://npm.io/package/raw-loader.md) — 4.3M weekly downloads
- [plop](https://npm.io/package/plop.md) — 1.4M weekly downloads
- [webpack-deadcode-plugin](https://npm.io/package/webpack-deadcode-plugin.md) — 80.3K weekly downloads
- [@storybook/preact-vite](https://npm.io/package/@storybook/preact-vite.md) — 54.2K weekly downloads
- [vite-plugin-transform](https://npm.io/package/vite-plugin-transform.md) — 2.4K weekly downloads

## Recent versions

- 2.2.4 (latest) — 2020-10-20
- 2.2.3 — 2020-07-01
- 2.2.2 — 2020-02-01
- 2.2.1 — 2020-02-01
- 2.2.0 — 2018-06-20
- 2.1.1 — 2018-05-02
- 2.1.0 — 2018-02-27
- 2.0.0 — 2017-12-11
- 1.0.0 — 2017-04-12

## README

![Build Status](https://travis-ci.org/pmowrer/rollup-plugin-peer-deps-external.svg?branch=master) [![npm](https://img.shields.io/npm/v/rollup-plugin-peer-deps-external.svg)](https://www.npmjs.com/package/rollup-plugin-peer-deps-external) [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)

# Rollup Plugin Peer Deps External
Automatically externalize `peerDependencies` in a `rollup` bundle.

## Motivation
When bundling a library using [`rollup`](https://github.com/rollup/rollup), we generally want to keep from including  [`peerDependencies`](https://nodejs.org/en/blog/npm/peer-dependencies/) since they are expected to be  provided by the consumer of the library. By excluding these dependencies, we keep bundle size down and avoid bundling duplicate dependencies.

We can achieve this using the rollup [`external`](https://github.com/rollup/rollup/wiki/JavaScript-API#external) configuration option, providing it a list of the peer dependencies to exclude from the bundle. This plugin automates the process, automatically adding a library's `peerDependencies` to the `external` configuration.

## Installation
```bash
npm install --save-dev rollup-plugin-peer-deps-external
```

## Usage
```javascript
// Add to plugins array in rollup.config.js
import peerDepsExternal from 'rollup-plugin-peer-deps-external';

export default {
  plugins: [
    // Preferably set as first plugin.
    peerDepsExternal(),
  ],
}
```

## Options
### packageJsonPath
If your `package.json` is not in the current working directory you can specify the path to the file
```javascript
// Add to plugins array in rollup.config.js
import peerDepsExternal from 'rollup-plugin-peer-deps-external';

export default {
  plugins: [
    // Preferably set as first plugin.
    peerDepsExternal({
      packageJsonPath: 'my/folder/package.json'
    }),
  ],
}
```

### includeDependencies \*\**deprecated*\*\*
Set `includeDependencies` to `true` to also externalize regular dependencies in addition to peer deps.

```javascript
// Add to plugins array in rollup.config.js
import peerDepsExternal from 'rollup-plugin-peer-deps-external';

export default {
  plugins: [
    // Preferably set as first plugin.
    peerDepsExternal({
      includeDependencies: true,
    }),
  ],
}
```

## Module paths
This plugin is compatible with module path format applied by, for example, [`babel-plugin-lodash`](https://github.com/lodash/babel-plugin-lodash). For any module name in `peerDependencies`, all paths beginning with that module name will also be added to `external`.

E.g.: If `lodash` is in `peerDependencies`, an import of `lodash/map` would be added to externals.

---
_Source: https://npm.io/package/rollup-plugin-peer-deps-external · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
