broccoli-rollup
A broccoli plugin that uses rollup.js on its input
Last updated 3 months ago by chadhietala .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install broccoli-rollup 
SYNC missed versions from official npm registry.

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.

Current Tags

  • 4.1.1                                ...           latest (3 months ago)

20 Versions

  • 4.1.1                                ...           3 months ago
  • 4.1.0                                ...           4 months ago
  • 4.0.0                                ...           4 months ago
  • 3.0.0                                ...           4 months ago
  • 2.1.1                                ...           a year ago
  • 2.1.0                                ...           a year ago
  • 2.0.0                                ...           2 years ago
  • 1.3.0                                ...           2 years ago
  • 1.2.0                                ...           2 years ago
  • 1.1.3                                ...           3 years ago
  • 1.1.2                                ...           3 years ago
  • 1.1.1                                ...           3 years ago
  • 1.1.0                                ...           3 years ago
  • 1.0.3                                ...           3 years ago
  • 1.0.2                                ...           3 years ago
  • 1.0.0                                ...           3 years ago
  • 0.0.5                                ...           3 years ago
  • 0.0.4                                ...           3 years ago
  • 0.0.3                                ...           3 years ago
  • 0.0.2                                ...           4 years ago
Downloads
Today 0
This Week 14
This Month 73
Last Day 8
Last Week 24
Last Month 269
Dependencies (9)
Dev Dependencies (13)

Copyright 2014 - 2016 © taobao.org |