diff --git a/src/Loader.ts b/src/Loader.ts index cce336d..66f7ab4 100644 --- a/src/Loader.ts +++ b/src/Loader.ts @@ -45,7 +45,7 @@ export type LoaderCodeGen = Function & ( | ( (file: string, module: string, loaderOptions: RouterLoaderOptions, resourceOptions: RouteResourceOptions) => string ) ) -const LOAD_CHILDREN_RE = /loadChildren[\s]*:[\s]*['|"].+?['|"]/; +const LOAD_CHILDREN_RE = /loadChildren[\s]*:[\s]*['|"].*#{1}.*['|"]/; export class Loader { public query: RouterLoaderOptions; diff --git a/src/builtin_codegens.ts b/src/builtin_codegens.ts index 9cf0f3c..18f9a20 100644 --- a/src/builtin_codegens.ts +++ b/src/builtin_codegens.ts @@ -43,9 +43,11 @@ systemCodeGen['deprecated'] = () => { systemCodeGen['deprecated'] = () => {}; }; -export const importCodeGen: LoaderCodeGen = (file: string, module: string, opts: RouterLoaderOptions) => { +export const importCodeGen: LoaderCodeGen = (file: string, module: string, opts: RouterLoaderOptions, resourceOptions: RouteResourceOptions) => { + const webpackChunkName = resourceOptions.chunkName ? ` /* webpackChunkName: "${resourceOptions.chunkName}" */` : ''; + const result = [ - `function importCodeGen() { return import_('${file}')`, + `function importCodeGen() { return import_('${file}'${webpackChunkName})`, ` .then( function(module) { return module['${module}']; } ); }` ]; diff --git a/test/test.spec.ts b/test/test.spec.ts index 9408ef5..3f21a8b 100644 --- a/test/test.spec.ts +++ b/test/test.spec.ts @@ -419,6 +419,17 @@ describe('Loader', () => { }); }); + it('should output async-import codegen with chunk name', () => { + const loader = factory + .setOption('loader', 'async-import') + .toLoader(); + + return loader.replace(genCode('app/module-container/child-module#ChildModule?chunkName=foo')) + .then(mapToZero) + .then( (result: ReplaceResult) => { + expect(result.replacement).to.eql(`function() { return import('${cwdJoin('src/app/module-container/child-module/index')}' /* webpackChunkName: "foo" */) .then( function(module) { return module['ChildModule']; } ); }`); + }); + }); it('should output a custom codegen', () => { const loader = factory.toLoader();