Skip to content

Commit 2b6af24

Browse files
committed
add clydins solution
1 parent 9fc3d40 commit 2b6af24

File tree

2 files changed

+17
-54
lines changed

2 files changed

+17
-54
lines changed

packages/@ngtools/webpack/src/plugin.ts

+17-32
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import * as ts from 'typescript';
44

55
import {__NGTOOLS_PRIVATE_API_2} from '@angular/compiler-cli';
66
import {AngularCompilerOptions} from '@angular/tsc-wrapped';
7+
const ContextElementDependency = require('webpack/lib/dependencies/ContextElementDependency');
78

89
import {WebpackResourceLoader} from './resource_loader';
9-
import {createResolveDependenciesFromContextMap} from './utils';
1010
import {WebpackCompilerHost} from './compiler_host';
1111
import {resolveEntryModuleFromMain} from './entry_resolver';
1212
import {Tapable} from './webpack';
@@ -194,45 +194,30 @@ export class AotPlugin implements Tapable {
194194
apply(compiler: any) {
195195
this._compiler = compiler;
196196

197+
// Add lazy modules to the context module for @angular/core/src/linker
197198
compiler.plugin('context-module-factory', (cmf: any) => {
198-
cmf.plugin('before-resolve', (request: any, callback: (err?: any, request?: any) => void) => {
199-
if (!request) {
200-
return callback();
201-
}
202-
203-
// alter only request from @angular/core/src/linker
204-
if (!request.context.endsWith(path.join('@angular/core/src/linker'))) {
205-
return callback(null, request);
206-
}
207-
208-
request.request = this.skipCodeGeneration ? this.basePath : this.genDir;
209-
request.recursive = true;
210-
request.dependencies.forEach((d: any) => d.critical = false);
211-
return callback(null, request);
212-
});
213199
cmf.plugin('after-resolve', (result: any, callback: (err?: any, request?: any) => void) => {
214200
if (!result) {
215201
return callback();
216202
}
217203

218-
// there is no way to find the original request, so try to
219-
// match request from @angular/core/src/linker as best as possible
220-
if (
221-
result.resource == (this.skipCodeGeneration ? this.basePath : this.genDir)
222-
&& result.recursive == true
223-
&& result.dependencies.every((d: any) => d.critical == false)
224-
) {
225-
this.done.then(() => {
226-
result.resolveDependencies = createResolveDependenciesFromContextMap(
227-
this._lazyRoutes,
228-
result.resolveDependencies
229-
);
230-
return callback(null, result);
231-
}, () => callback(null))
232-
.catch(err => callback(err));
233-
} else {
204+
// alter only request from @angular/core/src/linker
205+
if (!result.resource.endsWith(path.join('@angular/core/src/linker'))) {
234206
return callback(null, result);
235207
}
208+
209+
this.done.then(() => {
210+
result.resource = this.skipCodeGeneration ? this.basePath : this.genDir;
211+
result.recursive = true;
212+
result.dependencies.forEach((d: any) => d.critical = false);
213+
result.resolveDependencies = (p1: any, p2: any, p3: any, p4: RegExp, cb: any ) => {
214+
const dependencies = Object.keys(this._lazyRoutes)
215+
.map((key) => new ContextElementDependency(this._lazyRoutes[key], key));
216+
cb(null, dependencies);
217+
};
218+
return callback(null, result);
219+
}, () => callback(null))
220+
.catch(err => callback(err));
236221
});
237222
});
238223

packages/@ngtools/webpack/src/utils.ts

-22
This file was deleted.

0 commit comments

Comments
 (0)