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,
|
||||
this.moduleResolutionCache)
|
||||
.resolvedModule;
|
||||
if (rm && this.isSourceFile(rm.resolvedFileName)) {
|
||||
if (rm && this.isSourceFile(rm.resolvedFileName) && DTS.test(rm.resolvedFileName)) {
|
||||
// Case: generateCodeForLibraries = true and moduleName is
|
||||
// a .d.ts file in a node_modules folder.
|
||||
// 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);
|
||||
});
|
||||
|
||||
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', () => {
|
||||
|
|
Loading…
Reference in New Issue