Skip to content

Commit fd002df

Browse files
maleetzBrocco
authored andcommitted
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. Closes #5594
1 parent 456361d commit fd002df

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -512,7 +512,8 @@ export class AotPlugin implements Tapable {
512512
if (this.skipCodeGeneration) {
513513
this._lazyRoutes[k] = lazyRoute;
514514
} else {
515-
const lr = path.relative(this.basePath, lazyRoute.replace(/\.ts$/, '.ngfactory.ts'));
515+
const factoryPath = lazyRoute.replace(/(\.d)?\.ts$/, '.ngfactory.ts');
516+
const lr = path.relative(this.basePath, factoryPath);
516517
this._lazyRoutes[k + '.ngfactory'] = path.join(this.genDir, lr);
517518
}
518519
});

0 commit comments

Comments
 (0)