https://github.com/alfredosalzillo/rollup-plugin-multi-input
A Rollup plugin to bundle modular libraries
https://github.com/alfredosalzillo/rollup-plugin-multi-input
build-library glob javascript-library libraries modular multi-entry plugin rollup rollup-bundle rollup-plugin typescript-library
Last synced: about 2 months ago
JSON representation
A Rollup plugin to bundle modular libraries
- Host: GitHub
- URL: https://github.com/alfredosalzillo/rollup-plugin-multi-input
- Owner: alfredosalzillo
- License: mit
- Created: 2018-12-13T03:00:02.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2024-09-25T09:58:11.000Z (8 months ago)
- Last Synced: 2025-03-27T11:11:14.498Z (2 months ago)
- Topics: build-library, glob, javascript-library, libraries, modular, multi-entry, plugin, rollup, rollup-bundle, rollup-plugin, typescript-library
- Language: JavaScript
- Homepage:
- Size: 466 KB
- Stars: 134
- Watchers: 1
- Forks: 8
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# rollup-plugin-multi-input
[](https://github.com/alfredosalzillo/rollup-plugin-multi-input/actions/workflows/CD.yml)
[](https://github.com/alfredosalzillo/rollup-plugin-multi-input/actions/workflows/CI.yml)
[](https://codecov.io/gh/alfredosalzillo/rollup-plugin-multi-input)
[](https://badge.fury.io/js/rollup-plugin-multi-input)
[](https://github.com/semantic-release/semantic-release)> :warning: **Do you really need rollup-plugin-multi-input?**
>
> Take a look at the rollup [preserveModules](https://rollupjs.org/configuration-options/#output-preservemodules) and [preserveModulesRoot](https://rollupjs.org/configuration-options/#output-preservemodulesroot) options.A rollup plugin to bundle modular libraries with sub directories.
* Use multiple entry points.
* Use glob in entries.
* Preserve `src` tree structure in the `dist` folder.## Install
Install via npm or yarn.
```bash
npm i -D rollup-plugin-multi-input
yarn add rollup-plugin-multi-input
```
## Setup
In the rollup configuration
```js
import multiInput from 'rollup-plugin-multi-input';export default {
// use glob in the input
input: ['src/**/*.js'],
output: {
format: 'esm',
dir: 'dist'
},
plugins: [ multiInput() ],
};
```
If using a rollup version lower than **1.0.0**
enable `experimentalCodeSplitting`.It's possible to mix `input` type.
* use glob in array
```js
input: ['src/**/*.js']
```
* use object input configuration
```js
// DO 👍
input: [{
output1: 'src/output1.js'
}]
// DON'T ❌ (glob not supported yet)
input: [{
output1: 'src/**/*.js'
}]
```
* use glob string and object configuration
```js
input: ['src/more/**/*.js', 'src/more2/**/*.js', {
output1: 'src/output1.js'
}]
```## Options
### relative `'src/'`
Specify the relative path to use in the dist folder.Example:
```js
import multiInput from 'rollup-plugin-multi-input';export default {
input: ['src/bar.js', 'src/foo/bar.js'],
output: {
format: 'esm',
dir: 'dist'
},
plugins: [ multiInput({ relative: 'src/' }) ],
};
// create the files dist/bar.js and dist/foo/bar.js
```### transformOutputPath
A callback for transforming output file path.Example:
```js
import multiInput from 'rollup-plugin-multi-input';
import path from 'path';export default {
input: ['src/bar.js', 'src/foo/bar.js'],
output: {
format: 'esm',
dir: 'dist'
},
plugins: [ multiInput({
relative: 'src/',
transformOutputPath: (output, input) => `awesome/path/${path.basename(output)}`,
}) ],
};
// create the files awesome/path/bar.js and awesome/path/foo/bar.js
```### glob `{}`
[fast-glob](https://github.com/mrmlnc/fast-glob) object configuration.