GitXplorerGitXplorer
c

broccoli-rollup

public
36 stars
23 forks
10 issues

Commits

List of commits on branch master.
Verified
c48346f41388badca78ed7dc2180e15ef564ddd5

Merge pull request #73 from asakusuma/5x

kkrisselden committed 3 years ago
Unverified
7a77c080cdf175b1ec2a302a567181d6a7c4fd2b

Major upgrades and 5.x release

aasakusuma committed 3 years ago
Verified
f653880be0e4ed878f7e173439a81aab3abe4e7d

Merge pull request #61 from joliss/test

rrwjblue committed 4 years ago
Unverified
2159de1c40bc5fa9841c0f691d8a422ad13d0ef2

build:clean now removes dist; always run build:clean before test

jjoliss committed 4 years ago
Verified
e555f8ec08a3cbd39febdf763efe91a5941b42f5

Merge pull request #55 from tomdale/null-byte-paths

cchadhietala committed 5 years ago
Unverified
f4759749d192783cbdef1fadefe28e03cbbbc8d4

Support Rollup plugins that use null byte paths

ttomdale committed 5 years ago

README

The README file for this repository.

broccoli-rollup

Build Status

A broccoli plugin that uses rollup.js on its input.

Usage

Basic

// Brocfile.js
import rollup from 'broccoli-rollup';

export default () =>
  rollup('lib', {
    // nodeModulesPath: string Defaults to process.cwd()
    rollup: {
      input: 'index.js',
      output: {
        file: 'bundle.js',
        format: 'es',
      },
    },
  });

Code Splitting

// Brocfile.js
import rollup from 'broccoli-rollup';

export default () =>
  rollup('lib', {
    // nodeModulesPath: string Defaults to process.cwd()
    rollup: {
      input: 'index.js',
      output: {
        dir: 'chunks',
        format: 'es',
      },
    },
  });

Multiple Output

// Brocfile.js
import rollup from 'broccoli-rollup';

export default () =>
  rollup('lib', {
    // nodeModulesPath: string Defaults to process.cwd()
    rollup: {
      input: 'index.js',
      output: [
        {
          file: 'my-lib.amd.js',
          format: 'amd',
        },
        {
          file: 'my-lib.iife.js',
          name: 'MyLib',
          format: 'iife',
        },
      ],
    },
  });

Notes and Caveats

Broccoli is designed around immutable input and although rollup does expose enough in the build output for us to write it to disk, this doesn't work with the onwrite plugin hook and requires a significant amount of code to get feature parity with rollup's buildOutput.write(outputOptions).

We use the following build flow to achieve compatibility and feature parity with rollup's cli while still adhering to broccoli's immutable input constraints.

  1. sync node.inputPaths[0] to ${node.cachePath}/build
  2. symlink options.nodeModulesPath to ${node.cachePath}/node_modules
  3. change the working directory to ${node.cachePath}/build (rollup doesn't allow this to be passed in and plugins may also the use cwd)
  4. run rollup
  5. restore the working directory
  6. sync ${node.cachePath}/build to node.outputPath for all files that are different from the input.

If you have any plugins that require hard-coded paths into node_modules, please note that node_modules is symlinked above the build path.

So instead of doing node_modules/x you need to do ../node_modules/x.