# rollup-plugin-import-shaking

> Import modules as needed

Latest version **1.2.0** (published 2022-01-12) · MIT license · 0 weekly downloads

## Install

```sh
npm install rollup-plugin-import-shaking
pnpm add rollup-plugin-import-shaking
yarn add rollup-plugin-import-shaking
bun add rollup-plugin-import-shaking
```

## Health

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

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.2.0 |
| Published | 2022-01-12 |
| First published | 2021-08-11 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 8.1 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 7 |
| Author | Jesse Feng |
| Maintainers | fengxinming |
| Keywords | rollup, rollup-plugin, rollup-plugin-import-shaking, import-shaking, rollup-plugin-import |

## Links

- npm: https://www.npmjs.com/package/rollup-plugin-import-shaking
- Repository: https://github.com/fengxinming/rollup-plugins
- Homepage: https://github.com/fengxinming/rollup-plugins#readme
- Issues: https://github.com/fengxinming/rollup-plugins/issues
- npm.io page: https://npm.io/package/rollup-plugin-import-shaking

## Dependencies (1)

- [es-module-lexer](https://npm.io/package/es-module-lexer.md) ^0.7.1

## 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

- 1.2.0 (latest) — 2022-01-12
- 1.1.2 — 2021-12-28
- 1.1.1 — 2021-10-09
- 1.1.0 — 2021-08-12
- 1.0.0 — 2021-08-11

## README

# rollup-plugin-import-shaking

[![npm package](https://nodei.co/npm/rollup-plugin-import-shaking.png?downloads=true&downloadRank=true&stars=true)](https://www.npmjs.com/package/rollup-plugin-import-shaking)

> Import modules as needed.

[![NPM version](https://img.shields.io/npm/v/rollup-plugin-import-shaking.svg?style=flat)](https://npmjs.org/package/rollup-plugin-import-shaking)
[![NPM Downloads](https://img.shields.io/npm/dm/rollup-plugin-import-shaking.svg?style=flat)](https://npmjs.org/package/rollup-plugin-import-shaking)

## Installation

```bash
npm install rollup-plugin-import-shaking --save-dev
```

## Usage

rollup.config.js

### Example

```js
const empty = require('rollup-plugin-empty');
const importShaking = require('rollup-plugin-import-shaking');
const replaceImports = require('rollup-plugin-replace-imports');

module.exports = {
  input: 'src/index.js',
  plugins: [
    empty({
      silent: false,
      dir: 'dist'
    }),
    importShaking({
      modules: [{
        name: ['module1', 'module2'],
        importModule: (n, m) => `${m}/es/${n}`
      }]
    })
  ],
  output: [{
    file: 'dist/index.esm.js',
    format: 'es'
  }, {
    file: 'dist/index.cjs.js',
    format: 'cjs',
    plugins: [
      replaceImports({
        replacement(name) {
          return name.replace('/es/', '/');
        }
      })
    ]
  }]
};

```

## Options

* `name` <string|string[]> - A package name
* `importModule` [function] - return a module path
* `importStyle` [function] - return a style path

```ts
export type handler = (namedExport: string, pkgName: string) => string;

export interface ModuleOption {
  name: string | string[];
  importModule?: handler | true;
  importStyle?: handler | true;
}

export interface Options {
  modules: ModuleOption[];
}

export function createPlugin(opts: Options): Plugin;

declare namespace plugin {
  export function createPlugin(opts: Options): Plugin;

  export function decamelize(name: string): string;
}

export default plugin;
```

## Example

[demo-import-shaking](examples/demo-import-shaking)

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