diff --git a/packages/schematics/angular/migrations/update-8/drop-es6-polyfills.ts b/packages/schematics/angular/migrations/update-8/drop-es6-polyfills.ts index d7442b4819c1..265595e1f0ba 100644 --- a/packages/schematics/angular/migrations/update-8/drop-es6-polyfills.ts +++ b/packages/schematics/angular/migrations/update-8/drop-es6-polyfills.ts @@ -106,7 +106,7 @@ function dropES2015PolyfillsFromFile(polyfillPath: string): Rule { } const sourceFile = ts.createSourceFile(polyfillPath, - content, + content.replace(/^\uFEFF/, ''), ts.ScriptTarget.Latest, true, ); diff --git a/packages/schematics/angular/migrations/update-8/update-lazy-module-paths.ts b/packages/schematics/angular/migrations/update-8/update-lazy-module-paths.ts index ade0418ee39c..1c829889c5e7 100644 --- a/packages/schematics/angular/migrations/update-8/update-lazy-module-paths.ts +++ b/packages/schematics/angular/migrations/update-8/update-lazy-module-paths.ts @@ -17,7 +17,7 @@ function* visit(directory: DirEntry): IterableIterator { if (content.includes('loadChildren')) { const source = ts.createSourceFile( entry.path, - content.toString(), + content.toString().replace(/^\uFEFF/, ''), ts.ScriptTarget.Latest, true, ); diff --git a/packages/schematics/angular/migrations/update-8/update-lazy-module-paths_spec.ts b/packages/schematics/angular/migrations/update-8/update-lazy-module-paths_spec.ts index b3cc89c159ef..a8dbd30e8b20 100644 --- a/packages/schematics/angular/migrations/update-8/update-lazy-module-paths_spec.ts +++ b/packages/schematics/angular/migrations/update-8/update-lazy-module-paths_spec.ts @@ -73,5 +73,19 @@ describe('Migration to version 8', () => { expect(routes).toContain( `loadChildren: () => import('./lazy/lazy.module').then(m => m.LazyModule)`); }); + + it('should replace the module path string when file has BOM', async () => { + tree.create(lazyRoutePath, '\uFEFF' + Buffer.from(lazyRoute).toString()); + + schematicRunner.runSchematic('migration-08', {}, tree); + await schematicRunner.engine.executePostTasks().toPromise(); + + const routes = tree.readContent(lazyRoutePath); + + expect(routes).not.toContain('./lazy/lazy.module#LazyModule'); + expect(routes).toContain( + `loadChildren: () => import('./lazy/lazy.module').then(m => m.LazyModule)`); + }); + }); });