2.1.2 • Published 8 months ago

@ayan4m1/rollup-plugin-multi-input v2.1.2

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

rollup-plugin-multi-input

codecov npm version

:warning: Do you really need rollup-plugin-multi-input?

Take a look at the rollup preserveModules and 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.

npm i -D @ayan4m1/rollup-plugin-multi-input
yarn add @ayan4m1/rollup-plugin-multi-input

Setup

In the rollup configuration

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
    input: ['src/**/*.js'];
  • use object input configuration
    // DO 👍
    input: [
      {
        output1: 'src/output1.js',
      },
    ];
    // DON'T ❌ (glob not supported yet)
    input: [
      {
        output1: 'src/**/*.js',
      },
    ];
  • use glob string and object configuration
    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:

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:

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 object configuration.

2.1.2

8 months ago

2.1.1

10 months ago

2.0.0

1 year ago