Browse Source

deconflict ES bundle imports – fixes #659

ghi-672
Rich-Harris 9 years ago
parent
commit
c96888e2f4
  1. 8
      src/finalisers/es6.js
  2. 3
      test/form/conflicting-imports/_config.js
  3. 7
      test/form/conflicting-imports/_expected/amd.js
  4. 8
      test/form/conflicting-imports/_expected/cjs.js
  5. 6
      test/form/conflicting-imports/_expected/es6.js
  6. 8
      test/form/conflicting-imports/_expected/iife.js
  7. 11
      test/form/conflicting-imports/_expected/umd.js
  8. 4
      test/form/conflicting-imports/main.js
  9. 3
      test/form/conflicting-imports/other.js

8
src/finalisers/es6.js

@ -10,7 +10,13 @@ export default function es6 ( bundle, magicString ) {
const specifiers = [];
const specifiersList = [specifiers];
const importedNames = keys( module.declarations )
.filter( name => name !== '*' && name !== 'default' );
.filter( name => name !== '*' && name !== 'default' )
.map( name => {
const declaration = module.declarations[ name ];
if ( declaration.name === declaration.safeName ) return declaration.name;
return `${declaration.name} as ${declaration.safeName}`;
});
if ( module.declarations.default ) {
specifiers.push( module.name );

3
test/form/conflicting-imports/_config.js

@ -0,0 +1,3 @@
module.exports = {
description: 'ensures bundle imports are deconflicted (#659)'
};

7
test/form/conflicting-imports/_expected/amd.js

@ -0,0 +1,7 @@
define(['foo', 'bar'], function (foo, bar) { 'use strict';
console.log( bar.a );
console.log( foo.a );
});

8
test/form/conflicting-imports/_expected/cjs.js

@ -0,0 +1,8 @@
'use strict';
var foo = require('foo');
var bar = require('bar');
console.log( bar.a );
console.log( foo.a );

6
test/form/conflicting-imports/_expected/es6.js

@ -0,0 +1,6 @@
import { a } from 'foo';
import { a as a$1 } from 'bar';
console.log( a$1 );
console.log( a );

8
test/form/conflicting-imports/_expected/iife.js

@ -0,0 +1,8 @@
(function (foo,bar) {
'use strict';
console.log( bar.a );
console.log( foo.a );
}(foo,bar));

11
test/form/conflicting-imports/_expected/umd.js

@ -0,0 +1,11 @@
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('foo'), require('bar')) :
typeof define === 'function' && define.amd ? define(['foo', 'bar'], factory) :
(factory(global.foo,global.bar));
}(this, function (foo,bar) { 'use strict';
console.log( bar.a );
console.log( foo.a );
}));

4
test/form/conflicting-imports/main.js

@ -0,0 +1,4 @@
import { a } from 'foo';
import './other.js';
console.log( a );

3
test/form/conflicting-imports/other.js

@ -0,0 +1,3 @@
import { a } from 'bar';
console.log( a );
Loading…
Cancel
Save