Author your library in ES6 modules and distribute in everything under the sun:
- cjs
- amd
- amd, named & concatenated
- globals, concatenated
$ npm install broccoli-dist-es6-module
var dist = require('broccoli-dist-es6-module');
module.exports = dist('lib', {
// the entry script, and module that becomes the global
main: 'main',
// will become window.ic.ajax with the exports from `main`
global: 'ic.ajax',
// the prefix for named-amd modules
packageName: 'ic-ajax',
// global output only: naive shimming, when the id 'ember' is imported,
// substitute with `window.Ember` instead
shim: {
'ember': 'Ember'
}
});
And then run broccoli:
$ broccoli build dist
Open up dist
to see the results.
-
main
- the entry script to your package, determines which module exports to your global namespace, also the package that is returned in AMD withrequire(['your-package-name'])
-
packageName
- named-amd, the name of your packagerequire(['your-package-name'])
; -
global
- globals: the global to attach yourmain
module to -
shim
- globals: map import string ids to objects onwindow
, see usage above or the examples
-
This uses the
compatFix
option of the es6-module-transpiler which is not necessarily future proof (but without it we couldn'timport jQuery from 'jquery'
). -
The shimming is really hacky, but its working.