Skip to content

Instantly share code, notes, and snippets.

@HenryVonfire
Forked from nucleartide/index.js
Created June 28, 2017 07:14
Show Gist options
  • Save HenryVonfire/959b5c6341ee344124fdd52db6066494 to your computer and use it in GitHub Desktop.
Save HenryVonfire/959b5c6341ee344124fdd52db6066494 to your computer and use it in GitHub Desktop.
Import node modules into an Ember app, with tree shaking
/**
* This is an example of importing https://github.com/component/color-picker
* into an Ember app. However, you can import any node module.
*
* Create an in-repo addon:
*
* $ ember g in-repo-addon rollup
*
* You should have a file `lib/rollup/index.js`.
* Replace the contents of that file with the stuff below.
*/
const path = require('path')
const Rollup = require('broccoli-rollup')
const MergeTrees = require('broccoli-merge-trees')
const Funnel = require('broccoli-funnel')
const commonjs = require('rollup-plugin-commonjs')
const resolve = require('rollup-plugin-node-resolve')
module.exports = {
name: 'rollup',
/**
* https://ember-cli.com/api/classes/Addon.html#method_treeForVendor
*/
treeForVendor(tree) {
const p = path.dirname(require.resolve('color-picker'))
const f = new Funnel(p, { srcDir: '/', destDir: 'color-picker' })
const r = new Rollup(p, {
rollup: {
entry: 'index.js',
dest: 'color-picker/color-picker.js',
format: 'amd',
moduleId: 'color-picker',
exports: 'named',
plugins: [commonjs(), resolve()],
},
})
return new MergeTrees([f, r])
},
/**
* Import files from 'vendor/'.
*
* https://ember-cli.com/api/classes/Addon.html#method_included
*/
included(parent) {
this.import('vendor/color-picker/color-picker.css')
this.import('vendor/color-picker/color-picker.js')
},
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment