Skip to content

Commit

Permalink
mangle chunk boundaries in compact mode
Browse files Browse the repository at this point in the history
  • Loading branch information
guybedford committed Apr 29, 2018
1 parent 93f2b6c commit aa72b97
Show file tree
Hide file tree
Showing 24 changed files with 163 additions and 8 deletions.
2 changes: 1 addition & 1 deletion src/Chunk.ts
Original file line number Diff line number Diff line change
Expand Up @@ -375,7 +375,7 @@ export default class Chunk {

generateInternalExports(options: OutputOptions) {
if (this.isEntryModuleFacade) return;
const mangle = options.format === 'system' || options.format === 'es';
const mangle = options.format === 'system' || options.format === 'es' || options.compact;
let i = 0,
safeExportName: string;
this.exportNames = Object.create(null);
Expand Down
2 changes: 1 addition & 1 deletion src/finalisers/cjs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ export default function cjs(
exportMode,
options.interop,
options.compact,
`module.exports${_}=`
`module.exports${_}=${_}`
);

magicString.prepend(intro);
Expand Down
10 changes: 5 additions & 5 deletions src/finalisers/shared/getExportBlock.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@ export default function getExportBlock(
exports: ChunkExports,
dependencies: ChunkDependencies,
exportMode: string,
compact: boolean,
interop: boolean,
mechanism = 'return'
compact: boolean,
mechanism = 'return '
) {
const _ = compact ? '' : ' ';

if (exportMode === 'default') {
let local;
exports.some(expt => {
Expand All @@ -30,11 +32,9 @@ export default function getExportBlock(
});
});
}
return `${mechanism} ${local};`;
return `${mechanism}${local};`;
}

const _ = compact ? '' : ' ';

let exportBlock = '';

// star exports must always output first for precedence
Expand Down
9 changes: 9 additions & 0 deletions test/chunking-form/samples/chunking-compact/_config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
module.exports = {
description: 'chunking compact and mangled output',
options: {
input: ['main1.js', 'main2.js'],
output: {
compact: true
}
}
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
define(['exports'],function(exports){'use strict';function fn () {
console.log('lib2 fn');
}function fn$1 () {
fn();
console.log('dep2 fn');
}exports.a=fn$1;});
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
define(['./chunk-1e9855f7.js'],function(__chunk_1){'use strict';function fn () {
console.log('dep1 fn');
}class Main1 {
constructor () {
fn();
__chunk_1.a();
}
}return Main1;});
12 changes: 12 additions & 0 deletions test/chunking-form/samples/chunking-compact/_expected/amd/main2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
define(['external','./chunk-1e9855f7.js'],function(external,__chunk_1){'use strict';function fn () {
console.log('lib1 fn');
external.fn();
}function fn$1 () {
fn();
console.log('dep3 fn');
}class Main2 {
constructor () {
fn$1();
__chunk_1.a();
}
}return Main2;});
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
'use strict';function fn () {
console.log('lib2 fn');
}function fn$1 () {
fn();
console.log('dep2 fn');
}exports.a=fn$1;
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
'use strict';var __chunk_1=require('./chunk-992f09ca.js');function fn () {
console.log('dep1 fn');
}class Main1 {
constructor () {
fn();
__chunk_1.a();
}
}module.exports=Main1;
12 changes: 12 additions & 0 deletions test/chunking-form/samples/chunking-compact/_expected/cjs/main2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
'use strict';var external=require('external'),__chunk_1=require('./chunk-992f09ca.js');function fn () {
console.log('lib1 fn');
external.fn();
}function fn$1 () {
fn();
console.log('dep3 fn');
}class Main2 {
constructor () {
fn$1();
__chunk_1.a();
}
}module.exports=Main2;
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
function fn () {
console.log('lib2 fn');
}function fn$1 () {
fn();
console.log('dep2 fn');
}export{fn$1 as a};
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import {a as fn}from'./chunk-5b60a9d9.js';function fn$1 () {
console.log('dep1 fn');
}class Main1 {
constructor () {
fn$1();
fn();
}
}export default Main1;
12 changes: 12 additions & 0 deletions test/chunking-form/samples/chunking-compact/_expected/es/main2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import {fn}from'external';import {a as fn$1}from'./chunk-5b60a9d9.js';function fn$2 () {
console.log('lib1 fn');
fn();
}function fn$3 () {
fn$2();
console.log('dep3 fn');
}class Main2 {
constructor () {
fn$3();
fn$1();
}
}export default Main2;
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
System.register([],function(exports,module){'use strict';return{execute:function(){exports('a',fn$1);function fn () {
console.log('lib2 fn');
}function fn$1 () {
fn();
console.log('dep2 fn');
}}};});
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
System.register(['./chunk-ad0e6b97.js'],function(exports,module){'use strict';var fn;return{setters:[function(module){fn=module.a;}],execute:function(){function fn$1 () {
console.log('dep1 fn');
}class Main1 {
constructor () {
fn$1();
fn();
}
} exports('default', Main1);}};});
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
System.register(['external','./chunk-ad0e6b97.js'],function(exports,module){'use strict';var fn,fn$1;return{setters:[function(module){fn=module.fn;},function(module){fn$1=module.a;}],execute:function(){function fn$2 () {
console.log('lib1 fn');
fn();
}function fn$3 () {
fn$2();
console.log('dep3 fn');
}class Main2 {
constructor () {
fn$3();
fn$1();
}
} exports('default', Main2);}};});
3 changes: 3 additions & 0 deletions test/chunking-form/samples/chunking-compact/dep1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export function fn () {
console.log('dep1 fn');
}
6 changes: 6 additions & 0 deletions test/chunking-form/samples/chunking-compact/dep2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { fn as libfn } from './lib2.js';

export function fn () {
libfn();
console.log('dep2 fn');
}
6 changes: 6 additions & 0 deletions test/chunking-form/samples/chunking-compact/dep3.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { fn as libfn } from './lib1.js';

export function fn () {
libfn();
console.log('dep3 fn');
}
6 changes: 6 additions & 0 deletions test/chunking-form/samples/chunking-compact/lib1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { fn as fn$1 } from 'external';

export function fn () {
console.log('lib1 fn');
fn$1();
}
3 changes: 3 additions & 0 deletions test/chunking-form/samples/chunking-compact/lib2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export function fn () {
console.log('lib2 fn');
}
9 changes: 9 additions & 0 deletions test/chunking-form/samples/chunking-compact/main1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { fn } from './dep1.js';
import { fn as fn2 } from './dep2.js';

export default class Main1 {
constructor () {
fn();
fn2();
}
}
9 changes: 9 additions & 0 deletions test/chunking-form/samples/chunking-compact/main2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { fn } from './dep2.js';
import { fn as fn2 } from './dep3.js';

export default class Main2 {
constructor () {
fn2();
fn();
}
}
2 changes: 1 addition & 1 deletion test/form/samples/compact/_expected/cjs.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'use strict';function _interopDefault(e){return(e&&(typeof e==='object')&&'default'in e)?e['default']:e}var x=_interopDefault(require('external'));function foo () {
console.log( x );
}module.exports= foo;
}module.exports=foo;

0 comments on commit aa72b97

Please sign in to comment.