Skip to content

Commit 18ee60b

Browse files
committed
fix(@ngtools/webpack): fix aot builds using npm packages that have lazy loaded modules
Currently, code splitting derived from routes with the loadChildren property only works if the resolved source file is a *.ts file in the source directory of your angular-cli project. If your project uses an npm package that has a route with loadChildren, the build will resolve the lazy loaded module as a *.d.ts definition file and then attempt to find an *.d.ts.ngfactory.ts file in the generated AOT directory, which does not exist. This fixes the path generation logic so the build will look for a *.ngfactory.ts file in $$_gendir/node_modules.
1 parent 446dc65 commit 18ee60b

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,8 @@ export class AotPlugin implements Tapable {
461461
if (this.skipCodeGeneration) {
462462
this._lazyRoutes[k] = lazyRoute;
463463
} else {
464-
const lr = path.relative(this.basePath, lazyRoute.replace(/\.ts$/, '.ngfactory.ts'));
464+
const factoryPath = lazyRoute.replace(/(\.d)?\.ts$/, '.ngfactory.ts');
465+
const lr = path.join(path.sep, path.relative(this.basePath, factoryPath));
465466
this._lazyRoutes[k + '.ngfactory'] = path.join(this.genDir, lr);
466467
}
467468
});

0 commit comments

Comments
 (0)