Skip to content

Commit 77f07c6

Browse files
alan-agius4dgp1130
authored andcommitted
fix(@schematics/angular): add include to type definitions in tsconfig
Fixes #16923 (cherry picked from commit bf04333)
1 parent 261209c commit 77f07c6

File tree

2 files changed

+28
-9
lines changed

2 files changed

+28
-9
lines changed

packages/schematics/angular/migrations/update-9/update-app-tsconfigs.ts

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* Use of this source code is governed by an MIT-style license that can be
66
* found in the LICENSE file at https://angular.io/license
77
*/
8-
import { JsonAstObject, logging } from '@angular-devkit/core';
8+
import { JsonAstObject, join, logging, normalize } from '@angular-devkit/core';
99
import { Rule, Tree, UpdateRecorder } from '@angular-devkit/schematics';
1010
import { dirname, relative } from 'path';
1111
import {
@@ -36,23 +36,29 @@ export function updateApplicationTsConfigs(): Rule {
3636
// Add `module` option in the workspace tsconfig
3737
updateModuleCompilerOption(tree, '/tsconfig.json');
3838

39-
for (const { target } of getTargets(workspace, 'build', Builders.Browser)) {
40-
updateTsConfig(tree, target, Builders.Browser, logger);
39+
for (const { target, project } of getTargets(workspace, 'build', Builders.Browser)) {
40+
updateTsConfig(tree, target, project, Builders.Browser, logger);
4141
}
4242

43-
for (const { target } of getTargets(workspace, 'server', Builders.Server)) {
44-
updateTsConfig(tree, target, Builders.Server, logger);
43+
for (const { target, project } of getTargets(workspace, 'server', Builders.Server)) {
44+
updateTsConfig(tree, target, project, Builders.Server, logger);
4545
}
4646

47-
for (const { target } of getTargets(workspace, 'test', Builders.Karma)) {
48-
updateTsConfig(tree, target, Builders.Karma, logger);
47+
for (const { target, project } of getTargets(workspace, 'test', Builders.Karma)) {
48+
updateTsConfig(tree, target, project, Builders.Karma, logger);
4949
}
5050

5151
return tree;
5252
};
5353
}
5454

55-
function updateTsConfig(tree: Tree, builderConfig: JsonAstObject, builderName: Builders, logger: logging.LoggerApi) {
55+
function updateTsConfig(
56+
tree: Tree,
57+
builderConfig: JsonAstObject,
58+
project: JsonAstObject,
59+
builderName: Builders,
60+
logger: logging.LoggerApi,
61+
) {
5662
const options = getAllOptions(builderConfig);
5763
for (const option of options) {
5864
let recorder: UpdateRecorder;
@@ -108,6 +114,18 @@ function updateTsConfig(tree: Tree, builderConfig: JsonAstObject, builderName: B
108114
recorder.insertLeft(start.offset, tsInclude.text.replace('.ts', '.d.ts'));
109115
tree.commitUpdate(recorder);
110116
}
117+
} else {
118+
// Includes are not present, add includes to dts files
119+
// By default when 'include' nor 'files' fields are used TypeScript
120+
// will include all ts files.
121+
const srcRootAst = findPropertyInAstObject(project, 'sourceRoot');
122+
const include = srcRootAst?.kind === 'string'
123+
? join(normalize(srcRootAst.value), '**/*.d.ts')
124+
: '**/*.d.ts';
125+
126+
recorder = tree.beginUpdate(tsConfigPath);
127+
insertPropertyInAstObjectInOrder(recorder, tsConfigAst, 'include', [include], 2);
128+
tree.commitUpdate(recorder);
111129
}
112130

113131
const files = findPropertyInAstObject(tsConfigAst, 'files');

packages/schematics/angular/migrations/update-9/update-app-tsconfigs_spec.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,10 @@ describe('Migration to version 9', () => {
6060
it('should update apps tsConfig with stricter files inclusions', async () => {
6161
overrideJsonFile(tree, 'tsconfig.app.json', defaultTsConfigOptions);
6262
const tree2 = await schematicRunner.runSchematicAsync('workspace-version-9', {}, tree.branch()).toPromise();
63-
const { exclude, files } = JSON.parse(tree2.readContent('tsconfig.app.json'));
63+
const { exclude, files, include } = JSON.parse(tree2.readContent('tsconfig.app.json'));
6464
expect(exclude).toBeUndefined();
6565
expect(files).toEqual(['src/main.ts', 'src/polyfills.ts']);
66+
expect(include).toEqual(['src/**/*.d.ts']);
6667
});
6768

6869
it('should resolve paths correctly even if they are using windows separators', async () => {

0 commit comments

Comments
 (0)