fix(compiler-cli): do not force type checking on .js files
The compiler host would force any file that is in node_modules into the list of files that needed to be type checked which captures .js files if `allowJs` is set to `true`. This should have only forced .d.ts files into the project to enable generation of factories. Fixes: #19757
This commit is contained in:
parent
30208759cd
commit
5f23a1223f
|
@ -130,7 +130,7 @@ export class TsCompilerAotCompilerTypeCheckHostAdapter implements ts.CompilerHos
|
||||||
moduleName, containingFile.replace(/\\/g, '/'), this.options, this,
|
moduleName, containingFile.replace(/\\/g, '/'), this.options, this,
|
||||||
this.moduleResolutionCache)
|
this.moduleResolutionCache)
|
||||||
.resolvedModule;
|
.resolvedModule;
|
||||||
if (rm && this.isSourceFile(rm.resolvedFileName)) {
|
if (rm && this.isSourceFile(rm.resolvedFileName) && DTS.test(rm.resolvedFileName)) {
|
||||||
// Case: generateCodeForLibraries = true and moduleName is
|
// Case: generateCodeForLibraries = true and moduleName is
|
||||||
// a .d.ts file in a node_modules folder.
|
// a .d.ts file in a node_modules folder.
|
||||||
// Need to set isExternalLibraryImport to false so that generated files for that file
|
// Need to set isExternalLibraryImport to false so that generated files for that file
|
||||||
|
|
|
@ -1667,6 +1667,38 @@ describe('ngc transformer command-line', () => {
|
||||||
`);
|
`);
|
||||||
expect(main(['-p', path.join(basePath, 'src/tsconfig.json')])).toBe(0);
|
expect(main(['-p', path.join(basePath, 'src/tsconfig.json')])).toBe(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should not type check a .js files from node_modules with allowJs', () => {
|
||||||
|
write('src/tsconfig.json', `{
|
||||||
|
"extends": "../tsconfig-base.json",
|
||||||
|
"compilerOptions": {
|
||||||
|
"noEmitOnError": true,
|
||||||
|
"allowJs": true,
|
||||||
|
"declaration": false
|
||||||
|
},
|
||||||
|
"files": ["test-module.ts"]
|
||||||
|
}`);
|
||||||
|
write('src/test-module.ts', `
|
||||||
|
import {Component, NgModule} from '@angular/core';
|
||||||
|
import 'my-library';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
template: 'hello'
|
||||||
|
})
|
||||||
|
export class HelloCmp {}
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
declarations: [HelloCmp],
|
||||||
|
})
|
||||||
|
export class MyModule {}
|
||||||
|
`);
|
||||||
|
write('src/node_modules/t.txt', ``);
|
||||||
|
write('src/node_modules/my-library/index.js', `
|
||||||
|
export someVar = 1;
|
||||||
|
export someOtherVar = undefined + 1;
|
||||||
|
`);
|
||||||
|
expect(main(['-p', path.join(basePath, 'src/tsconfig.json')])).toBe(0);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('formatted messages', () => {
|
describe('formatted messages', () => {
|
||||||
|
|
Loading…
Reference in New Issue