Skip to content

Commit

Permalink
Only add manual chunks in a single location
Browse files Browse the repository at this point in the history
  • Loading branch information
lukastaegert committed May 2, 2019
1 parent efe30cc commit 3201c39
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 19 deletions.
30 changes: 12 additions & 18 deletions src/ModuleLoader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ export interface UnresolvedModuleWithAlias {
}

interface UnresolvedEntryModuleWithAlias extends UnresolvedModuleWithAlias {
isManualChunkEntry?: boolean;
manualChunkAlias?: string;
}

function normalizeRelativeExternalId(importer: string, source: string) {
Expand Down Expand Up @@ -131,15 +131,17 @@ export class ModuleLoader {
for (const alias of Object.keys(manualChunks)) {
const manualChunkIds = manualChunks[alias];
for (const unresolvedId of manualChunkIds) {
unresolvedManualChunks.push({ alias, unresolvedId, isManualChunkEntry: true });
unresolvedManualChunks.push({ alias: null, unresolvedId, manualChunkAlias: alias });
}
}
const loadNewManualChunkModulesPromise = Promise.all(
unresolvedManualChunks.map(this.loadEntryModule)
).then(manualChunkModules => {
for (const module of manualChunkModules) {
// TODO Lukas can we do the assigment and error handling here?
this.addToManualChunk(module.manualChunkAlias, module);
for (let index = 0; index < manualChunkModules.length; index++) {
this.addToManualChunk(
unresolvedManualChunks[index].manualChunkAlias,
manualChunkModules[index]
);
}
});

Expand Down Expand Up @@ -167,6 +169,10 @@ export class ModuleLoader {
}

private addToManualChunk(alias: string, module: Module) {
if (module.manualChunkAlias !== null && module.manualChunkAlias !== alias) {
error(errCannotAssignModuleToChunk(module.id, alias, module.manualChunkAlias));
}
module.manualChunkAlias = alias;
if (!this.manualChunkModules[alias]) {
this.manualChunkModules[alias] = [];
}
Expand Down Expand Up @@ -229,7 +235,6 @@ export class ModuleLoader {
this.modulesById.set(id, module);
const manualChunkAlias = this.getManualChunk(id);
if (typeof manualChunkAlias === 'string') {
module.manualChunkAlias = manualChunkAlias;
this.addToManualChunk(manualChunkAlias, module);
}

Expand Down Expand Up @@ -343,11 +348,7 @@ export class ModuleLoader {
return resolvedId;
}

private loadEntryModule = ({
alias,
unresolvedId,
isManualChunkEntry
}: UnresolvedEntryModuleWithAlias): Promise<Module> =>
private loadEntryModule = ({ alias, unresolvedId }: UnresolvedModuleWithAlias): Promise<Module> =>
this.pluginDriver
.hookFirst('resolveId', [unresolvedId, undefined])
.then((resolveIdResult: ResolveIdResult) => {
Expand All @@ -364,13 +365,6 @@ export class ModuleLoader {

if (typeof id === 'string') {
return this.fetchModule(id, undefined).then(module => {
if (isManualChunkEntry) {
if (module.manualChunkAlias !== null && module.manualChunkAlias !== alias) {
error(errCannotAssignModuleToChunk(module.id, alias, module.manualChunkAlias));
}
module.manualChunkAlias = alias;
return module;
}
if (alias !== null) {
if (module.chunkAlias !== null && module.chunkAlias !== alias) {
error(errCannotAssignModuleToChunk(module.id, alias, module.chunkAlias));
Expand Down
2 changes: 1 addition & 1 deletion test/function/samples/manual-chunks-conflict/_config.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ module.exports = {
},
error: {
code: 'INVALID_CHUNK',
message: `Cannot assign dep.js to the "dep1" chunk as it is already in the "dep2" chunk.`
message: `Cannot assign dep.js to the "dep2" chunk as it is already in the "dep1" chunk.`
}
};

0 comments on commit 3201c39

Please sign in to comment.