Skip to content

Commit 3d4f590

Browse files
fix(core): do not add typescript in new empty repos (#15163)
Co-authored-by: Emily Xiong <xiongemi@gmail.com>
1 parent 825ba04 commit 3d4f590

File tree

32 files changed

+236
-125
lines changed

32 files changed

+236
-125
lines changed

packages/angular/src/generators/application/angular-v14/lib/root-router-config.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,25 @@
11
import type { Tree } from '@nrwl/devkit';
2-
import type { NormalizedSchema } from './normalized-schema';
3-
42
import { insertImport } from '@nrwl/workspace/src/utilities/ast-utils';
5-
import * as ts from 'typescript';
3+
import { ensureTypescript } from '@nrwl/js/src/utils/typescript/ensure-typescript';
64
import { addImportToModule } from '../../../../utils/nx-devkit/ast-utils';
5+
import type { NormalizedSchema } from './normalized-schema';
6+
7+
let tsModule: typeof import('typescript');
78

89
export function addRouterRootConfiguration(
910
host: Tree,
1011
options: NormalizedSchema
1112
) {
13+
if (!tsModule) {
14+
tsModule = ensureTypescript();
15+
}
1216
const modulePath = `${options.appProjectRoot}/src/app/app.module.ts`;
1317
const moduleSource = host.read(modulePath, 'utf-8');
1418

15-
let sourceFile = ts.createSourceFile(
19+
let sourceFile = tsModule.createSourceFile(
1620
modulePath,
1721
moduleSource,
18-
ts.ScriptTarget.Latest,
22+
tsModule.ScriptTarget.Latest,
1923
true
2024
);
2125

packages/angular/src/generators/application/angular-v14/lib/update-app-component-template.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
11
import type { Tree } from '@nrwl/devkit';
2-
import type { NormalizedSchema } from './normalized-schema';
3-
4-
import * as ts from 'typescript';
2+
import type * as ts from 'typescript';
53
import { replaceNodeValue } from '@nrwl/workspace/src/utilities/ast-utils';
4+
import { ensureTypescript } from '@nrwl/js/src/utils/typescript/ensure-typescript';
65
import { getDecoratorPropertyValueNode } from '../../../../utils/nx-devkit/ast-utils';
7-
86
import { nrwlHomeTemplate } from './nrwl-home-tpl';
7+
import type { NormalizedSchema } from './normalized-schema';
8+
9+
let tsModule: typeof import('typescript');
910

1011
export function updateAppComponentTemplate(
1112
host: Tree,
1213
options: NormalizedSchema
1314
) {
15+
if (!tsModule) {
16+
tsModule = ensureTypescript();
17+
}
1418
const content = options.routing
1519
? `${nrwlHomeTemplate.getSelector(
1620
options.prefix
@@ -35,10 +39,10 @@ export function updateAppComponentTemplate(
3539

3640
replaceNodeValue(
3741
host,
38-
ts.createSourceFile(
42+
tsModule.createSourceFile(
3943
componentPath,
4044
host.read(componentPath, 'utf-8'),
41-
ts.ScriptTarget.Latest,
45+
tsModule.ScriptTarget.Latest,
4246
true
4347
),
4448
componentPath,

packages/angular/src/generators/application/angular-v14/lib/update-component-spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
import type { Tree } from '@nrwl/devkit';
2-
import type { NormalizedSchema } from './normalized-schema';
3-
42
import { insertImport } from '@nrwl/workspace/src/utilities/ast-utils';
3+
import { ensureTypescript } from '@nrwl/js/src/utils/typescript/ensure-typescript';
54
import {
65
addImportToTestBed,
76
replaceIntoToTestBed,
87
} from '../../../../utils/nx-devkit/ast-utils';
8+
import type { NormalizedSchema } from './normalized-schema';
99

1010
let tsModule: typeof import('typescript');
1111

1212
export function updateComponentSpec(host: Tree, options: NormalizedSchema) {
1313
if (!tsModule) {
14-
tsModule = require('typescript');
14+
tsModule = ensureTypescript();
1515
}
1616
if (options.skipTests !== true) {
1717
const componentSpecPath = `${options.appProjectRoot}/src/app/app.component.spec.ts`;

packages/angular/src/generators/component-cypress-spec/lib/get-args-default-value.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,24 @@
1+
import { ensureTypescript } from '@nrwl/js/src/utils/typescript/ensure-typescript';
12
import type { PropertyDeclaration } from 'typescript';
2-
import { SyntaxKind } from 'typescript';
3+
4+
let tsModule: typeof import('typescript');
35

46
export function getArgsDefaultValue(
57
property: PropertyDeclaration
68
): string | undefined {
79
if (!property.initializer) {
810
return undefined;
911
}
12+
if (!tsModule) {
13+
tsModule = ensureTypescript();
14+
}
1015
switch (property.initializer.kind) {
11-
case SyntaxKind.StringLiteral:
16+
case tsModule.SyntaxKind.StringLiteral:
1217
const returnString = property.initializer.getText().slice(1, -1);
1318
return returnString.replace(/\s/g, '+');
14-
case SyntaxKind.NumericLiteral:
15-
case SyntaxKind.TrueKeyword:
16-
case SyntaxKind.FalseKeyword:
19+
case tsModule.SyntaxKind.NumericLiteral:
20+
case tsModule.SyntaxKind.TrueKeyword:
21+
case tsModule.SyntaxKind.FalseKeyword:
1722
return property.initializer.getText();
1823
default:
1924
return undefined;

packages/angular/src/generators/component-cypress-spec/lib/get-component-selector.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
import type { Tree } from '@nrwl/devkit';
2+
import { ensureTypescript } from '@nrwl/js/src/utils/typescript/ensure-typescript';
23
import { findNodes } from 'nx/src/utils/typescript';
34
import type { PropertyAssignment } from 'typescript';
4-
import { SyntaxKind } from 'typescript';
5+
56
import {
67
getDecoratorMetadata,
78
getTsSourceFile,
89
} from '../../../utils/nx-devkit/ast-utils';
910

11+
let tsModule: typeof import('typescript');
12+
1013
export function getComponentSelector(tree: Tree, path: string): string {
14+
if (!tsModule) {
15+
tsModule = ensureTypescript();
16+
}
1117
const file = getTsSourceFile(tree, path);
1218

1319
const componentDecorators = getDecoratorMetadata(
@@ -20,7 +26,7 @@ export function getComponentSelector(tree: Tree, path: string): string {
2026
}
2127
const componentDecorator = componentDecorators[0];
2228
const selectorNode = <PropertyAssignment>(
23-
findNodes(componentDecorator, SyntaxKind.PropertyAssignment).find(
29+
findNodes(componentDecorator, tsModule.SyntaxKind.PropertyAssignment).find(
2430
(node: PropertyAssignment) => node.name.getText() === 'selector'
2531
)
2632
);

packages/angular/src/generators/ngrx/lib/add-exports-barrel.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import type { Tree } from '@nrwl/devkit';
22
import { joinPathFragments, names } from '@nrwl/devkit';
3+
import { ensureTypescript } from '@nrwl/js/src/utils/typescript/ensure-typescript';
34
import { addGlobal } from '@nrwl/workspace/src/utilities/ast-utils';
4-
import { createSourceFile, ScriptTarget } from 'typescript';
55
import type { NormalizedNgRxGeneratorOptions } from './normalize-options';
66

7+
let tsModule: typeof import('typescript');
8+
79
/**
810
* Add ngrx feature exports to the public barrel in the feature library
911
*/
@@ -25,11 +27,14 @@ export function addExportsToBarrel(
2527
return;
2628
}
2729

30+
if (!tsModule) {
31+
tsModule = ensureTypescript();
32+
}
2833
const indexSourceText = tree.read(indexFilePath, 'utf-8');
29-
let sourceFile = createSourceFile(
34+
let sourceFile = tsModule.createSourceFile(
3035
indexFilePath,
3136
indexSourceText,
32-
ScriptTarget.Latest,
37+
tsModule.ScriptTarget.Latest,
3338
true
3439
);
3540

packages/angular/src/generators/ngrx/lib/add-imports-to-module.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import type { Tree } from '@nrwl/devkit';
22
import { names } from '@nrwl/devkit';
33
import { insertImport } from '@nrwl/workspace/src/utilities/ast-utils';
4+
import { ensureTypescript } from '@nrwl/js/src/utils/typescript/ensure-typescript';
45
import type { SourceFile } from 'typescript';
5-
import { createSourceFile, ScriptTarget } from 'typescript';
66
import {
77
addImportToModule,
88
addProviderToBootstrapApplication,
@@ -11,6 +11,8 @@ import {
1111
import type { NormalizedNgRxGeneratorOptions } from './normalize-options';
1212
import { addProviderToRoute } from '../../../utils/nx-devkit/route-utils';
1313

14+
let tsModule: typeof import('typescript');
15+
1416
function addRootStoreImport(
1517
tree: Tree,
1618
isParentStandalone: boolean,
@@ -143,12 +145,15 @@ export function addImportsToModule(
143145
tree: Tree,
144146
options: NormalizedNgRxGeneratorOptions
145147
): void {
148+
if (!tsModule) {
149+
tsModule = ensureTypescript();
150+
}
146151
const parentPath = options.module ?? options.parent;
147152
const sourceText = tree.read(parentPath, 'utf-8');
148-
let sourceFile = createSourceFile(
153+
let sourceFile = tsModule.createSourceFile(
149154
parentPath,
150155
sourceText,
151-
ScriptTarget.Latest,
156+
tsModule.ScriptTarget.Latest,
152157
true
153158
);
154159

packages/angular/src/generators/ngrx/lib/validate-options.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import type { Tree } from '@nrwl/devkit';
2-
import { tsquery } from '@phenomnomnominal/tsquery';
32
import { coerce, lt, major } from 'semver';
43
import {
54
getInstalledAngularVersionInfo,
@@ -36,6 +35,7 @@ export function validateOptions(
3635
if (lt(angularVersionInfo.version, '14.1.0') || ngrxMajorVersion < 15) {
3736
const parentPath = options.parent ?? options.module;
3837
const parentContent = tree.read(parentPath, 'utf-8');
38+
const { tsquery } = require('@phenomnomnominal/tsquery');
3939
const ast = tsquery.ast(parentContent);
4040

4141
const NG_MODULE_DECORATOR_SELECTOR =

packages/angular/src/generators/scam-directive/lib/convert-directive-to-scam.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import type { Tree } from '@nrwl/devkit';
22
import { joinPathFragments, names } from '@nrwl/devkit';
3+
import { ensureTypescript } from '@nrwl/js/src/utils/typescript/ensure-typescript';
34
import { insertImport } from '@nrwl/workspace/src/utilities/ast-utils';
4-
import { createSourceFile, ScriptTarget } from 'typescript';
55
import type { FileInfo } from '../../utils/file-info';
66
import type { NormalizedSchema } from '../schema';
77

8+
let tsModule: typeof import('typescript');
9+
810
export function convertDirectiveToScam(
911
tree: Tree,
1012
directiveFileInfo: FileInfo,
@@ -15,6 +17,9 @@ export function convertDirectiveToScam(
1517
`Couldn't find directive at path ${directiveFileInfo.filePath} to add SCAM setup.`
1618
);
1719
}
20+
if (!tsModule) {
21+
tsModule = ensureTypescript();
22+
}
1823

1924
const directiveNames = names(options.name);
2025
const typeNames = names('directive');
@@ -25,10 +30,10 @@ export function convertDirectiveToScam(
2530
directiveFileInfo.filePath,
2631
'utf-8'
2732
);
28-
let source = createSourceFile(
33+
let source = tsModule.createSourceFile(
2934
directiveFileInfo.filePath,
3035
currentDirectiveContents,
31-
ScriptTarget.Latest,
36+
tsModule.ScriptTarget.Latest,
3237
true
3338
);
3439

packages/angular/src/generators/scam-pipe/lib/convert-pipe-to-scam.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import type { Tree } from '@nrwl/devkit';
22
import { joinPathFragments, names } from '@nrwl/devkit';
3+
import { ensureTypescript } from '@nrwl/js/src/utils/typescript/ensure-typescript';
34
import { insertImport } from '@nrwl/workspace/src/utilities/ast-utils';
4-
import { createSourceFile, ScriptTarget } from 'typescript';
55
import type { FileInfo } from '../../utils/file-info';
66
import type { NormalizedSchema } from '../schema';
77

8+
let tsModule: typeof import('typescript');
9+
810
export function convertPipeToScam(
911
tree: Tree,
1012
pipeFileInfo: FileInfo,
@@ -15,17 +17,20 @@ export function convertPipeToScam(
1517
`Couldn't find pipe at path ${pipeFileInfo.filePath} to add SCAM setup.`
1618
);
1719
}
20+
if (!tsModule) {
21+
tsModule = ensureTypescript();
22+
}
1823

1924
const pipeNames = names(options.name);
2025
const typeNames = names('pipe');
2126
const pipeClassName = `${pipeNames.className}${typeNames.className}`;
2227

2328
if (options.inlineScam) {
2429
const currentPipeContents = tree.read(pipeFileInfo.filePath, 'utf-8');
25-
let source = createSourceFile(
30+
let source = tsModule.createSourceFile(
2631
pipeFileInfo.filePath,
2732
currentPipeContents,
28-
ScriptTarget.Latest,
33+
tsModule.ScriptTarget.Latest,
2934
true
3035
);
3136

0 commit comments

Comments
 (0)