diff --git a/packages/@ngtools/webpack/src/loader.spec.ts b/packages/@ngtools/webpack/src/loader.spec.ts index dbd7b731e2df..c9b5338d3348 100644 --- a/packages/@ngtools/webpack/src/loader.spec.ts +++ b/packages/@ngtools/webpack/src/loader.spec.ts @@ -34,6 +34,27 @@ describe('@ngtools/webpack', () => { expect(refactor2.sourceText).toMatch(/\(\{\s*otherValue2: 2\s*,\s*otherValue3: 3\s*}\)/); expect(refactor2.sourceText).toMatch(/\(\{\s*otherValue4: 4\s*}\)/); }); + + it('should work without a root name', () => { + const host = new WebpackCompilerHost({}, ''); + host.writeFile('/file.ts', ` + import './file2.ts'; + `, false); + host.writeFile('/file2.ts', ` + @SomeDecorator({ moduleId: 123 }) class CLS {} + @SomeDecorator({ moduleId: 123, otherValue1: 1 }) class CLS2 {} + @SomeDecorator({ otherValue2: 2, moduleId: 123, otherValue3: 3 }) class CLS3 {} + @SomeDecorator({ otherValue4: 4, moduleId: 123 }) class CLS4 {} + `, false); + + const program = ts.createProgram(['/file.ts'], {}, host); + const refactor = new TypeScriptFileRefactor('/file2.ts', host, program); + removeModuleIdOnlyForTesting(refactor); + expect(refactor.sourceText).toMatch(/\(\{\s+}\)/); + expect(refactor.sourceText).toMatch(/\(\{\s*otherValue1: 1\s*}\)/); + expect(refactor.sourceText).toMatch(/\(\{\s*otherValue2: 2\s*,\s*otherValue3: 3\s*}\)/); + expect(refactor.sourceText).toMatch(/\(\{\s*otherValue4: 4\s*}\)/); + }); }); }); }); diff --git a/packages/@ngtools/webpack/src/refactor.ts b/packages/@ngtools/webpack/src/refactor.ts index 7b11da71d3a1..2f5c02a2db63 100644 --- a/packages/@ngtools/webpack/src/refactor.ts +++ b/packages/@ngtools/webpack/src/refactor.ts @@ -45,9 +45,9 @@ export class TypeScriptFileRefactor { this._sourceFile = _program.getSourceFile(fileName); } if (!this._sourceFile) { - this._program = null; + // this._program = null; this._sourceFile = ts.createSourceFile(fileName, _host.readFile(fileName), - ts.ScriptTarget.Latest); + ts.ScriptTarget.Latest, true); } this._sourceText = this._sourceFile.getFullText(this._sourceFile); this._sourceString = new MagicString(this._sourceText);