Skip to content
This repository was archived by the owner on Aug 4, 2021. It is now read-only.

Commit c191a13

Browse files
committed
dont export __esModule
1 parent 5db0e36 commit c191a13

File tree

4 files changed

+33
-17
lines changed

4 files changed

+33
-17
lines changed

src/index.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ import { flatten, isReference } from './ast-utils.js';
99
var firstpass = /\b(?:require|module|exports|global)\b/;
1010
var exportsPattern = /^(?:module\.)?exports(?:\.([a-zA-Z_$][a-zA-Z_$0-9]*))?$/;
1111

12+
var blacklistedExports = {
13+
__esModule: true,
14+
default: true
15+
};
16+
1217
function getName ( id ) {
1318
const base = basename( id );
1419
const ext = extname( base );
@@ -154,7 +159,10 @@ return module.exports;
154159
155160
export default (${name} && typeof ${name} === 'object' && 'default' in ${name} ? ${name}['default'] : ${name});\n`;
156161

157-
outro += Object.keys( namedExports ).map( x => `export var ${x} = ${name}.${x};` ).join( '\n' );
162+
outro += Object.keys( namedExports )
163+
.filter( key => !blacklistedExports[ key ] )
164+
.map( x => `export var ${x} = ${name}.${x};` )
165+
.join( '\n' );
158166

159167
magicString.trim()
160168
.prepend( importBlock + intro )

test/samples/__esModule/answer.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
exports.__esModule = true;
2+
exports.answer = 42;

test/samples/__esModule/main.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
exports.__esModule = true;
2+
exports.answer = 42;

test/test.js

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -172,53 +172,57 @@ describe( 'rollup-plugin-commonjs', function () {
172172
});
173173
});
174174

175-
it( 'identifies named exports from object literals', function () {
175+
it( 'handles references to `global`', function () {
176176
return rollup.rollup({
177-
entry: 'samples/named-exports-from-object-literal/main.js',
177+
entry: 'samples/global/main.js',
178178
plugins: [ commonjs() ]
179179
}).then( function ( bundle ) {
180180
var generated = bundle.generate({
181181
format: 'cjs'
182182
});
183183

184-
var fn = new Function ( 'module', 'assert', generated.code );
185-
fn( {}, assert );
184+
var window = {};
185+
186+
var fn = new Function ( 'window', 'module', generated.code );
187+
fn( window, {} );
188+
189+
assert.equal( window.foo, 'bar', generated.code );
186190
});
187191
});
188192

189-
it( 'handles references to `global`', function () {
193+
it( 'handles transpiled CommonJS modules', function () {
190194
return rollup.rollup({
191-
entry: 'samples/global/main.js',
195+
entry: 'samples/corejs/literal-with-default.js',
192196
plugins: [ commonjs() ]
193197
}).then( function ( bundle ) {
194198
var generated = bundle.generate({
195199
format: 'cjs'
196200
});
197201

198-
var window = {};
202+
var module = { exports: {} };
199203

200-
var fn = new Function ( 'window', 'module', generated.code );
201-
fn( window, {} );
204+
var fn = new Function ( 'module', 'exports', generated.code );
205+
fn( module, module.exports );
202206

203-
assert.equal( window.foo, 'bar', generated.code );
207+
assert.equal( module.exports, 'foobar', generated.code );
204208
});
205209
});
206210

207-
it( 'handles transpiled CommonJS modules', function () {
211+
it( 'does not export __esModule', function () {
208212
return rollup.rollup({
209-
entry: 'samples/corejs/literal-with-default.js',
213+
entry: 'samples/__esModule/main.js',
210214
plugins: [ commonjs() ]
211215
}).then( function ( bundle ) {
212216
var generated = bundle.generate({
213217
format: 'cjs'
214218
});
215219

216-
var module = {};
220+
var fn = new Function ( 'module', 'exports', generated.code );
221+
var module = { exports: {} };
217222

218-
var fn = new Function ( 'module', generated.code );
219-
fn( module );
223+
fn( module, module.exports );
220224

221-
assert.equal( module.exports, 'foobar', generated.code );
225+
assert.ok( !module.exports.__esModule );
222226
});
223227
});
224228
});

0 commit comments

Comments
 (0)