ember-maybe-import-regenerator
Version:
The default blueprint for ember-cli addons.
55 lines (42 loc) • 1.5 kB
JavaScript
;
var path = require('path');
var Funnel = require('broccoli-funnel');
module.exports = {
name: require('./package').name,
included(app) {
this._super.included.apply(this, arguments);
var hostApp = this._findApp(app);
var babelOptions = (hostApp.options && hostApp.options.babel) || {};
var emberCLIBabelOptions = (hostApp.options && hostApp.options['ember-cli-babel']) || {};
var babelInstance = this.addons.filter(function(addon) { return addon.name === 'ember-cli-babel'; })[0];
var needsRegenerator = babelInstance.isPluginRequired('transform-regenerator');
var regeneratorAlreadyIncluded =
hostApp.__ember_maybe_import_regenerator_included ||
babelOptions.includePolyfill || emberCLIBabelOptions.includePolyfill;
hostApp.__ember_maybe_import_regenerator_included = true;
if (!regeneratorAlreadyIncluded && needsRegenerator) {
hostApp.import('vendor/regenerator-runtime/runtime.js', {
prepend: true
});
}
},
treeForVendor() {
var regeneratorRuntimePath = path.dirname(require.resolve('regenerator-runtime'));
return new Funnel(this.treeGenerator(regeneratorRuntimePath), {
srcDir: '/',
destDir: 'regenerator-runtime'
});
},
_findApp(hostApp) {
var app = this.app || hostApp;
var parent = this.parent;
while (parent.parent) {
if (parent.app) {
app = parent.app;
break;
}
parent = parent.parent;
}
return app;
}
};