-
-
Save HenryVonfire/959b5c6341ee344124fdd52db6066494 to your computer and use it in GitHub Desktop.
Import node modules into an Ember app, with tree shaking
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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