From 1f9404b11ba8871ea763819bbd60c523802efecc Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Mon, 12 Aug 2019 21:10:53 +0200 Subject: [PATCH] Provide consistent chunking via a consistent order of entry modules when emitting chunks --- src/ModuleLoader.ts | 22 +++++++--- .../emit-file/emit-chunk-order1/_config.js | 37 ++++++++++++++++ .../_expected/amd/generated-dep.js | 7 +++ .../_expected/amd/generated-emitted.js | 10 +++++ .../emit-chunk-order1/_expected/amd/main.js | 7 +++ .../_expected/cjs/generated-dep.js | 5 +++ .../_expected/cjs/generated-emitted.js | 10 +++++ .../emit-chunk-order1/_expected/cjs/main.js | 8 ++++ .../_expected/es/generated-dep.js | 3 ++ .../_expected/es/generated-emitted.js | 6 +++ .../emit-chunk-order1/_expected/es/main.js | 6 +++ .../_expected/system/generated-dep.js | 10 +++++ .../_expected/system/generated-emitted.js | 15 +++++++ .../_expected/system/main.js | 18 ++++++++ .../emit-file/emit-chunk-order1/dep.js | 1 + .../emit-file/emit-chunk-order1/dep2.js | 3 ++ .../emit-file/emit-chunk-order1/main.js | 3 ++ .../emit-file/emit-chunk-order2/_config.js | 43 +++++++++++++++++++ .../_expected/amd/generated-dep.js | 7 +++ .../_expected/amd/generated-emitted.js | 10 +++++ .../emit-chunk-order2/_expected/amd/main.js | 7 +++ .../_expected/cjs/generated-dep.js | 5 +++ .../_expected/cjs/generated-emitted.js | 10 +++++ .../emit-chunk-order2/_expected/cjs/main.js | 8 ++++ .../_expected/es/generated-dep.js | 3 ++ .../_expected/es/generated-emitted.js | 6 +++ .../emit-chunk-order2/_expected/es/main.js | 6 +++ .../_expected/system/generated-dep.js | 10 +++++ .../_expected/system/generated-emitted.js | 15 +++++++ .../_expected/system/main.js | 18 ++++++++ .../emit-file/emit-chunk-order2/dep.js | 1 + .../emit-file/emit-chunk-order2/dep2.js | 3 ++ .../emit-file/emit-chunk-order2/main.js | 3 ++ 33 files changed, 321 insertions(+), 5 deletions(-) create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order1/_config.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/amd/generated-dep.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/amd/generated-emitted.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/amd/main.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/cjs/generated-dep.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/cjs/generated-emitted.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/cjs/main.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/es/generated-dep.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/es/generated-emitted.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/es/main.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/system/generated-dep.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/system/generated-emitted.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/system/main.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order1/dep.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order1/dep2.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order1/main.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order2/_config.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/amd/generated-dep.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/amd/generated-emitted.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/amd/main.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/cjs/generated-dep.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/cjs/generated-emitted.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/cjs/main.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/es/generated-dep.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/es/generated-emitted.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/es/main.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/system/generated-dep.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/system/generated-emitted.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/system/main.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order2/dep.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order2/dep2.js create mode 100644 test/chunking-form/samples/emit-file/emit-chunk-order2/main.js diff --git a/src/ModuleLoader.ts b/src/ModuleLoader.ts index 9290a509035..c03014ade55 100644 --- a/src/ModuleLoader.ts +++ b/src/ModuleLoader.ts @@ -90,13 +90,14 @@ function getHasModuleSideEffects( export class ModuleLoader { readonly isExternal: IsExternal; - private readonly entryModules: Module[] = []; private readonly getManualChunk: GetManualChunk; private readonly graph: Graph; private readonly hasModuleSideEffects: (id: string, external: boolean) => boolean; + private readonly indexedEntryModules: { index: number; module: Module }[] = []; private latestLoadModulesPromise: Promise = Promise.resolve(); private readonly manualChunkModules: Record = {}; private readonly modulesById: Map; + private nextEntryModuleIndex = 0; private readonly pluginDriver: PluginDriver; constructor( @@ -128,6 +129,8 @@ export class ModuleLoader { manualChunkModulesByAlias: Record; newEntryModules: Module[]; }> { + const firstEntryModuleIndex = this.nextEntryModuleIndex; + this.nextEntryModuleIndex += unresolvedEntryModules.length; const loadNewEntryModulesPromise = Promise.all( unresolvedEntryModules.map(({ fileName, id, name }) => this.loadEntryModule(id, true).then(module => { @@ -145,17 +148,26 @@ export class ModuleLoader { }) ) ).then(entryModules => { + let moduleIndex = firstEntryModuleIndex; for (const entryModule of entryModules) { entryModule.isUserDefinedEntryPoint = entryModule.isUserDefinedEntryPoint || isUserDefined; - const existingEntryModule = this.entryModules.find(module => module.id === entryModule.id); - if (!existingEntryModule) { - this.entryModules.push(entryModule); + const existingIndexModule = this.indexedEntryModules.find( + indexedModule => indexedModule.module.id === entryModule.id + ); + if (!existingIndexModule) { + this.indexedEntryModules.push({ module: entryModule, index: moduleIndex }); + } else { + existingIndexModule.index = Math.min(existingIndexModule.index, moduleIndex); } + moduleIndex++; } + this.indexedEntryModules.sort(({ index: indexA }, { index: indexB }) => + indexA > indexB ? 1 : -1 + ); return entryModules; }); return this.awaitLoadModulesPromise(loadNewEntryModulesPromise).then(newEntryModules => ({ - entryModules: this.entryModules, + entryModules: this.indexedEntryModules.map(({ module }) => module), manualChunkModulesByAlias: this.manualChunkModules, newEntryModules })); diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order1/_config.js b/test/chunking-form/samples/emit-file/emit-chunk-order1/_config.js new file mode 100644 index 00000000000..73c99b57db2 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order1/_config.js @@ -0,0 +1,37 @@ +const assert = require('assert'); + +module.exports = { + description: + 'creates a consistent chunking order (needs to be consistent with the other test of this kind)', + options: { + input: 'main', + plugins: { + resolveId(id) { + if (id === 'emitted') { + return id; + } + }, + load(id) { + if (id === 'emitted') { + return `import value from './dep.js'; +export const id = 'emitted'; +console.log(id, value); +`; + } + }, + buildStart() { + this.emitFile({ + type: 'chunk', + id: 'emitted' + }); + }, + generateBundle(options, bundle) { + assert.deepStrictEqual(Object.keys(bundle).map(key => bundle[key].name), [ + 'main', + 'dep', + 'emitted' + ]); + } + } + } +}; diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/amd/generated-dep.js b/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/amd/generated-dep.js new file mode 100644 index 00000000000..5e2f9f02968 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/amd/generated-dep.js @@ -0,0 +1,7 @@ +define(['exports'], function (exports) { 'use strict'; + + var value = 42; + + exports.value = value; + +}); diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/amd/generated-emitted.js b/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/amd/generated-emitted.js new file mode 100644 index 00000000000..a086c3ef515 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/amd/generated-emitted.js @@ -0,0 +1,10 @@ +define(['exports', './generated-dep'], function (exports, dep) { 'use strict'; + + const id = 'emitted'; + console.log(id, dep.value); + + exports.id = id; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/amd/main.js b/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/amd/main.js new file mode 100644 index 00000000000..ceb3068a820 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/amd/main.js @@ -0,0 +1,7 @@ +define(['./generated-dep', './generated-emitted'], function (dep, emitted) { 'use strict'; + + console.log(emitted.id); + + console.log('main', dep.value); + +}); diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/cjs/generated-dep.js b/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/cjs/generated-dep.js new file mode 100644 index 00000000000..6cec42c9a07 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/cjs/generated-dep.js @@ -0,0 +1,5 @@ +'use strict'; + +var value = 42; + +exports.value = value; diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/cjs/generated-emitted.js b/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/cjs/generated-emitted.js new file mode 100644 index 00000000000..e4aeef99a01 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/cjs/generated-emitted.js @@ -0,0 +1,10 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var dep = require('./generated-dep.js'); + +const id = 'emitted'; +console.log(id, dep.value); + +exports.id = id; diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/cjs/main.js b/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/cjs/main.js new file mode 100644 index 00000000000..7ab856e3140 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/cjs/main.js @@ -0,0 +1,8 @@ +'use strict'; + +var dep = require('./generated-dep.js'); +var emitted = require('./generated-emitted.js'); + +console.log(emitted.id); + +console.log('main', dep.value); diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/es/generated-dep.js b/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/es/generated-dep.js new file mode 100644 index 00000000000..b7cbe038a73 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/es/generated-dep.js @@ -0,0 +1,3 @@ +var value = 42; + +export { value as v }; diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/es/generated-emitted.js b/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/es/generated-emitted.js new file mode 100644 index 00000000000..d2806a7a5e1 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/es/generated-emitted.js @@ -0,0 +1,6 @@ +import { v as value } from './generated-dep.js'; + +const id = 'emitted'; +console.log(id, value); + +export { id }; diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/es/main.js b/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/es/main.js new file mode 100644 index 00000000000..2bd26d17681 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/es/main.js @@ -0,0 +1,6 @@ +import { v as value } from './generated-dep.js'; +import { id } from './generated-emitted.js'; + +console.log(id); + +console.log('main', value); diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/system/generated-dep.js b/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/system/generated-dep.js new file mode 100644 index 00000000000..e69dcc529da --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/system/generated-dep.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + var value = exports('v', 42); + + } + }; +}); diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/system/generated-emitted.js b/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/system/generated-emitted.js new file mode 100644 index 00000000000..206bbbcae32 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/system/generated-emitted.js @@ -0,0 +1,15 @@ +System.register(['./generated-dep.js'], function (exports) { + 'use strict'; + var value; + return { + setters: [function (module) { + value = module.v; + }], + execute: function () { + + const id = exports('id', 'emitted'); + console.log(id, value); + + } + }; +}); diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/system/main.js b/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/system/main.js new file mode 100644 index 00000000000..d429fca8d04 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order1/_expected/system/main.js @@ -0,0 +1,18 @@ +System.register(['./generated-dep.js', './generated-emitted.js'], function () { + 'use strict'; + var value, id; + return { + setters: [function (module) { + value = module.v; + }, function (module) { + id = module.id; + }], + execute: function () { + + console.log(id); + + console.log('main', value); + + } + }; +}); diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order1/dep.js b/test/chunking-form/samples/emit-file/emit-chunk-order1/dep.js new file mode 100644 index 00000000000..7a4e8a723a4 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order1/dep.js @@ -0,0 +1 @@ +export default 42; diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order1/dep2.js b/test/chunking-form/samples/emit-file/emit-chunk-order1/dep2.js new file mode 100644 index 00000000000..a5669bdf513 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order1/dep2.js @@ -0,0 +1,3 @@ +import { id } from 'emitted'; + +console.log(id); diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order1/main.js b/test/chunking-form/samples/emit-file/emit-chunk-order1/main.js new file mode 100644 index 00000000000..3b6fe4061ad --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order1/main.js @@ -0,0 +1,3 @@ +import value from './dep.js'; +import './dep2.js'; +console.log('main', value); diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order2/_config.js b/test/chunking-form/samples/emit-file/emit-chunk-order2/_config.js new file mode 100644 index 00000000000..fb858148512 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order2/_config.js @@ -0,0 +1,43 @@ +const assert = require('assert'); + +module.exports = { + description: + 'creates a consistent chunking order (needs to be consistent with the other test of this kind)', + options: { + input: 'main', + plugins: { + resolveId(id) { + if (id === 'emitted') { + return id; + } + }, + load(id) { + if (id === 'emitted') { + return new Promise(resolve => + setTimeout( + () => + resolve(`import value from './dep.js'; +export const id = 'emitted'; +console.log(id, value); +`), + 200 + ) + ); + } + }, + buildStart() { + this.emitFile({ + type: 'chunk', + id: 'emitted' + }); + }, + generateBundle(options, bundle) { + assert.deepStrictEqual(Object.keys(bundle).map(key => bundle[key].name), [ + 'main', + 'dep', + 'emitted' + ]); + } + } + } +}; diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/amd/generated-dep.js b/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/amd/generated-dep.js new file mode 100644 index 00000000000..5e2f9f02968 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/amd/generated-dep.js @@ -0,0 +1,7 @@ +define(['exports'], function (exports) { 'use strict'; + + var value = 42; + + exports.value = value; + +}); diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/amd/generated-emitted.js b/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/amd/generated-emitted.js new file mode 100644 index 00000000000..a086c3ef515 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/amd/generated-emitted.js @@ -0,0 +1,10 @@ +define(['exports', './generated-dep'], function (exports, dep) { 'use strict'; + + const id = 'emitted'; + console.log(id, dep.value); + + exports.id = id; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/amd/main.js b/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/amd/main.js new file mode 100644 index 00000000000..ceb3068a820 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/amd/main.js @@ -0,0 +1,7 @@ +define(['./generated-dep', './generated-emitted'], function (dep, emitted) { 'use strict'; + + console.log(emitted.id); + + console.log('main', dep.value); + +}); diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/cjs/generated-dep.js b/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/cjs/generated-dep.js new file mode 100644 index 00000000000..6cec42c9a07 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/cjs/generated-dep.js @@ -0,0 +1,5 @@ +'use strict'; + +var value = 42; + +exports.value = value; diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/cjs/generated-emitted.js b/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/cjs/generated-emitted.js new file mode 100644 index 00000000000..e4aeef99a01 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/cjs/generated-emitted.js @@ -0,0 +1,10 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var dep = require('./generated-dep.js'); + +const id = 'emitted'; +console.log(id, dep.value); + +exports.id = id; diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/cjs/main.js b/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/cjs/main.js new file mode 100644 index 00000000000..7ab856e3140 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/cjs/main.js @@ -0,0 +1,8 @@ +'use strict'; + +var dep = require('./generated-dep.js'); +var emitted = require('./generated-emitted.js'); + +console.log(emitted.id); + +console.log('main', dep.value); diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/es/generated-dep.js b/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/es/generated-dep.js new file mode 100644 index 00000000000..b7cbe038a73 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/es/generated-dep.js @@ -0,0 +1,3 @@ +var value = 42; + +export { value as v }; diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/es/generated-emitted.js b/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/es/generated-emitted.js new file mode 100644 index 00000000000..d2806a7a5e1 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/es/generated-emitted.js @@ -0,0 +1,6 @@ +import { v as value } from './generated-dep.js'; + +const id = 'emitted'; +console.log(id, value); + +export { id }; diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/es/main.js b/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/es/main.js new file mode 100644 index 00000000000..2bd26d17681 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/es/main.js @@ -0,0 +1,6 @@ +import { v as value } from './generated-dep.js'; +import { id } from './generated-emitted.js'; + +console.log(id); + +console.log('main', value); diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/system/generated-dep.js b/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/system/generated-dep.js new file mode 100644 index 00000000000..e69dcc529da --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/system/generated-dep.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + var value = exports('v', 42); + + } + }; +}); diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/system/generated-emitted.js b/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/system/generated-emitted.js new file mode 100644 index 00000000000..206bbbcae32 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/system/generated-emitted.js @@ -0,0 +1,15 @@ +System.register(['./generated-dep.js'], function (exports) { + 'use strict'; + var value; + return { + setters: [function (module) { + value = module.v; + }], + execute: function () { + + const id = exports('id', 'emitted'); + console.log(id, value); + + } + }; +}); diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/system/main.js b/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/system/main.js new file mode 100644 index 00000000000..d429fca8d04 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order2/_expected/system/main.js @@ -0,0 +1,18 @@ +System.register(['./generated-dep.js', './generated-emitted.js'], function () { + 'use strict'; + var value, id; + return { + setters: [function (module) { + value = module.v; + }, function (module) { + id = module.id; + }], + execute: function () { + + console.log(id); + + console.log('main', value); + + } + }; +}); diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order2/dep.js b/test/chunking-form/samples/emit-file/emit-chunk-order2/dep.js new file mode 100644 index 00000000000..7a4e8a723a4 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order2/dep.js @@ -0,0 +1 @@ +export default 42; diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order2/dep2.js b/test/chunking-form/samples/emit-file/emit-chunk-order2/dep2.js new file mode 100644 index 00000000000..a5669bdf513 --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order2/dep2.js @@ -0,0 +1,3 @@ +import { id } from 'emitted'; + +console.log(id); diff --git a/test/chunking-form/samples/emit-file/emit-chunk-order2/main.js b/test/chunking-form/samples/emit-file/emit-chunk-order2/main.js new file mode 100644 index 00000000000..3b6fe4061ad --- /dev/null +++ b/test/chunking-form/samples/emit-file/emit-chunk-order2/main.js @@ -0,0 +1,3 @@ +import value from './dep.js'; +import './dep2.js'; +console.log('main', value);