Skip to content

Commit

Permalink
Update addBundleLoader to accept multiple targets (#1085)
Browse files Browse the repository at this point in the history
  • Loading branch information
fathyb authored and devongovett committed Apr 8, 2018
1 parent 9038991 commit 9f3f30a
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 12 deletions.
39 changes: 28 additions & 11 deletions src/Bundler.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,18 @@ class Bundler extends EventEmitter {
this.delegate = options.delegate || {};
this.bundleLoaders = {};

const loadersPath = `./builtins/loaders/${
options.target === 'node' ? 'node' : 'browser'
}/`;

this.addBundleLoader('wasm', require.resolve(loadersPath + 'wasm-loader'));
this.addBundleLoader('css', require.resolve(loadersPath + 'css-loader'));
this.addBundleLoader('js', require.resolve(loadersPath + 'js-loader'));
this.addBundleLoader('wasm', {
browser: require.resolve('./builtins/loaders/browser/wasm-loader'),
node: require.resolve('./builtins/loaders/node/wasm-loader')
});
this.addBundleLoader('css', {
browser: require.resolve('./builtins/loaders/browser/css-loader'),
node: require.resolve('./builtins/loaders/node/css-loader')
});
this.addBundleLoader('js', {
browser: require.resolve('./builtins/loaders/browser/js-loader'),
node: require.resolve('./builtins/loaders/node/js-loader')
});

this.pending = false;
this.loadedAssets = new Map();
Expand Down Expand Up @@ -122,16 +127,28 @@ class Bundler extends EventEmitter {
this.packagers.add(type, packager);
}

addBundleLoader(type, path) {
if (typeof path !== 'string') {
throw new Error('Bundle loader should be a module path.');
addBundleLoader(type, paths) {
if (typeof paths === 'string') {
paths = {node: paths, browser: paths};
} else if (typeof paths !== 'object') {
throw new Error('Bundle loaders should be an object.');
}

for (const target in paths) {
if (target !== 'node' && target !== 'browser') {
throw new Error(`Unknown bundle loader target "${target}".`);
}

if (typeof paths[target] !== 'string') {
throw new Error('Bundle loader should be a string.');
}
}

if (this.farm) {
throw new Error('Bundle loaders must be added before bundling.');
}

this.bundleLoaders[type] = path;
this.bundleLoaders[type] = paths;
}

async loadPlugins() {
Expand Down
3 changes: 2 additions & 1 deletion src/packagers/JSPackager.js
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,8 @@ class JSPackager extends Packager {
for (let bundleType of this.bundleLoaders) {
let loader = this.options.bundleLoaders[bundleType];
if (loader) {
let asset = await this.bundler.getAsset(loader);
let target = this.options.target === 'node' ? 'node' : 'browser';
let asset = await this.bundler.getAsset(loader[target]);
await this.addAssetToBundle(asset);
loads +=
'b.register(' +
Expand Down

0 comments on commit 9f3f30a

Please sign in to comment.