diff --git a/lib/index.js b/lib/index.js index 0a4a1b9..0fddb14 100644 --- a/lib/index.js +++ b/lib/index.js @@ -11,14 +11,16 @@ module.exports = { }; function faucetJS(config, assetManager, { browsers, compact, sourcemaps } = {}) { + let targets = new Set(); let bundlers = config.map(bundleConfig => makeBundler(bundleConfig, - assetManager, { browsers, compact, sourcemaps })); + assetManager, { browsers, compact, sourcemaps, targets })); return filepaths => Promise.all(bundlers. map(bundler => bundler(filepaths))); } -function makeBundler(bundleConfig, assetManager, { browsers, compact, sourcemaps } = {}) { +function makeBundler(bundleConfig, assetManager, + { browsers, compact, sourcemaps, targets }) { // NB: bundle-specific configuration can override global options let config = Object.assign({ sourcemaps, compact }, bundleConfig, { browsers }); if(!compact) { @@ -35,6 +37,10 @@ function makeBundler(bundleConfig, assetManager, { browsers, compact, sourcemaps let { resolvePath } = assetManager; entryPoint = resolvePath(entryPoint); target = resolvePath(target, { enforceRelative: true }); + if(targets.has(target)) { + throw new Error(`duplicate target: ${repr(target, false)}`); + } + targets.add(target); let bundle = new Bundle(entryPoint, target, config, { browsers }); let writer = makeWriter(bundle, assetManager);