From 1454a02d137e9acea5f34f9ad4b4a37da6aaa7ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leosvel=20P=C3=A9rez=20Espinosa?= Date: Mon, 7 Mar 2022 19:32:10 +0000 Subject: [PATCH] cleanup(angular): address pr feedback --- .../application/lib/create-files.ts | 9 +++--- .../application/lib/update-e2e-project.ts | 6 ++-- .../generators/library/lib/update-project.ts | 7 +++-- .../setup-mfe/lib/generate-config.ts | 7 ++--- .../web-worker/lib/update-tsconfig.ts | 5 ++-- .../cypress-project/cypress-project.ts | 7 ++--- .../application/lib/create-files.ts | 7 ++--- .../devkit/src/generators/format-files.ts | 4 +-- packages/js/src/generators/library/library.ts | 10 ++++--- .../workspace-rules-project.ts | 7 ++--- .../lib/create-application-files.ts | 10 ++++--- .../src/generators/application/application.ts | 10 ++++--- .../src/generators/e2e-project/e2e.ts | 6 ++-- .../lib/create-application-files.ts | 10 ++++--- .../src/generators/library/library.ts | 13 ++++++--- .../lib/create-application-files.ts | 10 ++++--- .../react/src/generators/library/library.ts | 13 ++++++--- .../src/generators/application/application.ts | 10 ++++--- .../src/generators/library/library.ts | 7 +++-- .../generators/remove/lib/update-tsconfig.ts | 2 +- .../workspace/src/utilities/typescript.ts | 28 +++++++++---------- 21 files changed, 103 insertions(+), 85 deletions(-) diff --git a/packages/angular/src/generators/application/lib/create-files.ts b/packages/angular/src/generators/application/lib/create-files.ts index fc86855f1f671..ac5153d6a86cb 100644 --- a/packages/angular/src/generators/application/lib/create-files.ts +++ b/packages/angular/src/generators/application/lib/create-files.ts @@ -1,6 +1,6 @@ import type { Tree } from '@nrwl/devkit'; -import { generateFiles, joinPathFragments, offsetFromRoot } from '@nrwl/devkit'; -import { getRootTsConfigPathInTree } from '@nrwl/workspace/src/utilities/typescript'; +import { generateFiles, joinPathFragments } from '@nrwl/devkit'; +import { getRelativePathToRootTsConfig } from '@nrwl/workspace/src/utilities/typescript'; import type { NormalizedSchema } from './normalized-schema'; export function createFiles( @@ -16,9 +16,10 @@ export function createFiles( options.appProjectRoot, { ...options, - rootTsConfigPath: `${offsetFromRoot( + rootTsConfigPath: getRelativePathToRootTsConfig( + host, options.appProjectRoot - )}${getRootTsConfigPathInTree(host)}`, + ), tpl: '', } ); diff --git a/packages/angular/src/generators/application/lib/update-e2e-project.ts b/packages/angular/src/generators/application/lib/update-e2e-project.ts index 3d5ee890f97d8..386344c22fc33 100644 --- a/packages/angular/src/generators/application/lib/update-e2e-project.ts +++ b/packages/angular/src/generators/application/lib/update-e2e-project.ts @@ -6,7 +6,7 @@ import { updateJson, updateProjectConfiguration, } from '@nrwl/devkit'; -import { getRootTsConfigPathInTree } from '@nrwl/workspace/src/utilities/typescript'; +import { getRelativePathToRootTsConfig } from '@nrwl/workspace/src/utilities/typescript'; import type { NormalizedSchema } from './normalized-schema'; export function updateE2eProject(tree: Tree, options: NormalizedSchema) { @@ -61,9 +61,7 @@ export function updateE2eProject(tree: Tree, options: NormalizedSchema) { updateJson(tree, `${options.e2eProjectRoot}/tsconfig.json`, (json) => { return { ...json, - extends: `${offsetFromRoot( - options.e2eProjectRoot - )}${getRootTsConfigPathInTree(tree)}`, + extends: getRelativePathToRootTsConfig(tree, options.e2eProjectRoot), }; }); } diff --git a/packages/angular/src/generators/library/lib/update-project.ts b/packages/angular/src/generators/library/lib/update-project.ts index eff4327fd3c0e..acc4856cd82ad 100644 --- a/packages/angular/src/generators/library/lib/update-project.ts +++ b/packages/angular/src/generators/library/lib/update-project.ts @@ -9,7 +9,7 @@ import { updateProjectConfiguration, } from '@nrwl/devkit'; import { replaceAppNameWithPath } from '@nrwl/workspace'; -import { getRootTsConfigPathInTree } from '@nrwl/workspace/src/utilities/typescript'; +import { getRelativePathToRootTsConfig } from '@nrwl/workspace/src/utilities/typescript'; import * as path from 'path'; import { NormalizedSchema } from './normalized-schema'; import { updateNgPackage } from './update-ng-package'; @@ -119,9 +119,10 @@ function createFiles(host: Tree, options: NormalizedSchema) { options.projectRoot, { ...options, - rootTsConfigPath: `${offsetFromRoot( + rootTsConfigPath: getRelativePathToRootTsConfig( + host, options.projectRoot - )}${getRootTsConfigPathInTree(host)}`, + ), tpl: '', } ); diff --git a/packages/angular/src/generators/setup-mfe/lib/generate-config.ts b/packages/angular/src/generators/setup-mfe/lib/generate-config.ts index a280215885f51..b9e4ff1490c2e 100644 --- a/packages/angular/src/generators/setup-mfe/lib/generate-config.ts +++ b/packages/angular/src/generators/setup-mfe/lib/generate-config.ts @@ -5,7 +5,7 @@ import { logger, offsetFromRoot, } from '@nrwl/devkit'; -import { getRootTsConfigPathInTree } from '@nrwl/workspace/src/utilities/typescript'; +import { getRelativePathToRootTsConfig } from '@nrwl/workspace/src/utilities/typescript'; import type { Schema } from '../schema'; const SHARED_SINGLETON_LIBRARIES = [ @@ -32,7 +32,6 @@ export function generateWebpackConfig( ); } - const rootOffset = offsetFromRoot(appRoot); generateFiles( host, joinPathFragments(__dirname, '../files/webpack'), @@ -44,8 +43,8 @@ export function generateWebpackConfig( remotes: remotesWithPorts ?? [], sourceRoot: appRoot, sharedLibraries: SHARED_SINGLETON_LIBRARIES, - offsetFromRoot: rootOffset, - rootTsConfigPath: rootOffset + getRootTsConfigPathInTree(host), + offsetFromRoot: offsetFromRoot(appRoot), + rootTsConfigPath: getRelativePathToRootTsConfig(host, appRoot), } ); } diff --git a/packages/angular/src/generators/web-worker/lib/update-tsconfig.ts b/packages/angular/src/generators/web-worker/lib/update-tsconfig.ts index 05d70469524c7..21d7bce675e7a 100644 --- a/packages/angular/src/generators/web-worker/lib/update-tsconfig.ts +++ b/packages/angular/src/generators/web-worker/lib/update-tsconfig.ts @@ -1,17 +1,16 @@ import type { Tree } from '@nrwl/devkit'; import { joinPathFragments, - offsetFromRoot, readProjectConfiguration, updateJson, } from '@nrwl/devkit'; -import { getRootTsConfigPathInTree } from '@nrwl/workspace/src/utilities/typescript'; +import { getRelativePathToRootTsConfig } from '@nrwl/workspace/src/utilities/typescript'; export function updateTsConfig(tree: Tree, project: string): void { const { root } = readProjectConfiguration(tree, project); const workerTsConfigPath = joinPathFragments(root, 'tsconfig.worker.json'); updateJson(tree, workerTsConfigPath, (json) => { - json.extends = offsetFromRoot(root) + getRootTsConfigPathInTree(tree); + json.extends = getRelativePathToRootTsConfig(tree, root); return json; }); } diff --git a/packages/cypress/src/generators/cypress-project/cypress-project.ts b/packages/cypress/src/generators/cypress-project/cypress-project.ts index 0cdc274fc5440..27c9e0fbabf8c 100644 --- a/packages/cypress/src/generators/cypress-project/cypress-project.ts +++ b/packages/cypress/src/generators/cypress-project/cypress-project.ts @@ -16,7 +16,7 @@ import { } from '@nrwl/devkit'; import { Linter, lintProjectGenerator } from '@nrwl/linter'; import { runTasksInSerial } from '@nrwl/workspace/src/utilities/run-tasks-in-serial'; -import { getRootTsConfigPathInTree } from '@nrwl/workspace/src/utilities/typescript'; +import { getRelativePathToRootTsConfig } from '@nrwl/workspace/src/utilities/typescript'; import { join } from 'path'; // app @@ -34,14 +34,13 @@ export interface CypressProjectSchema extends Schema { } function createFiles(tree: Tree, options: CypressProjectSchema) { - const rootOffset = offsetFromRoot(options.projectRoot); generateFiles(tree, join(__dirname, './files'), options.projectRoot, { tmpl: '', ...options, project: options.project || 'Project', ext: options.js ? 'js' : 'ts', - offsetFromRoot: rootOffset, - rootTsConfigPath: rootOffset + getRootTsConfigPathInTree(tree), + offsetFromRoot: offsetFromRoot(options.projectRoot), + rootTsConfigPath: getRelativePathToRootTsConfig(tree, options.projectRoot), }); const cypressVersion = installedCypressVersion(); diff --git a/packages/detox/src/generators/application/lib/create-files.ts b/packages/detox/src/generators/application/lib/create-files.ts index 7d9e3133220b0..f0583f3beb8e2 100644 --- a/packages/detox/src/generators/application/lib/create-files.ts +++ b/packages/detox/src/generators/application/lib/create-files.ts @@ -1,14 +1,13 @@ import { generateFiles, offsetFromRoot, toJS, Tree } from '@nrwl/devkit'; -import { getRootTsConfigPathInTree } from '@nrwl/workspace/src/utilities/typescript'; +import { getRelativePathToRootTsConfig } from '@nrwl/workspace/src/utilities/typescript'; import { join } from 'path'; import { NormalizedSchema } from './normalize-options'; export function createFiles(host: Tree, options: NormalizedSchema) { - const rootOffset = offsetFromRoot(options.projectRoot); generateFiles(host, join(__dirname, '../files/app'), options.projectRoot, { ...options, - offsetFromRoot: rootOffset, - rootTsConfigPath: rootOffset + getRootTsConfigPathInTree(host), + offsetFromRoot: offsetFromRoot(options.projectRoot), + rootTsConfigPath: getRelativePathToRootTsConfig(host, options.projectRoot), }); if (options.js) { toJS(host); diff --git a/packages/devkit/src/generators/format-files.ts b/packages/devkit/src/generators/format-files.ts index d2c21fe9aa001..5808e42f34a88 100644 --- a/packages/devkit/src/generators/format-files.ts +++ b/packages/devkit/src/generators/format-files.ts @@ -132,12 +132,12 @@ function sortTsConfig(tree: Tree) { } } -function getRootTsConfigPath(tree: Tree): string | undefined { +function getRootTsConfigPath(tree: Tree): string | null { for (const path of ['tsconfig.base.json', 'tsconfig.json']) { if (tree.exists(path)) { return path; } } - return undefined; + return null; } diff --git a/packages/js/src/generators/library/library.ts b/packages/js/src/generators/library/library.ts index 678405f3e079a..aa9c88c3abc4c 100644 --- a/packages/js/src/generators/library/library.ts +++ b/packages/js/src/generators/library/library.ts @@ -16,7 +16,10 @@ import { import { jestProjectGenerator } from '@nrwl/jest'; import { Linter, lintProjectGenerator } from '@nrwl/linter'; import { runTasksInSerial } from '@nrwl/workspace/src/utilities/run-tasks-in-serial'; -import { getRootTsConfigPathInTree } from '@nrwl/workspace/src/utilities/typescript'; +import { + getRelativePathToRootTsConfig, + getRootTsConfigPathInTree, +} from '@nrwl/workspace/src/utilities/typescript'; import { join } from 'path'; import { LibraryGeneratorSchema } from '../../utils/schema'; import { addSwcConfig } from '../../utils/swc/add-swc-config'; @@ -162,7 +165,6 @@ function updateTsConfig(tree: Tree, options: NormalizedSchema) { function createFiles(tree: Tree, options: NormalizedSchema, filesDir: string) { const { className, name, propertyName } = names(options.name); - const rootOffset = offsetFromRoot(options.projectRoot); generateFiles(tree, filesDir, options.projectRoot, { ...options, dot: '.', @@ -173,8 +175,8 @@ function createFiles(tree: Tree, options: NormalizedSchema, filesDir: string) { cliCommand: 'nx', strict: undefined, tmpl: '', - offsetFromRoot: rootOffset, - rootTsConfigPath: rootOffset + getRootTsConfigPathInTree(tree), + offsetFromRoot: offsetFromRoot(options.projectRoot), + rootTsConfigPath: getRelativePathToRootTsConfig(tree, options.projectRoot), buildable: options.buildable === true, hasUnitTestRunner: options.unitTestRunner !== 'none', }); diff --git a/packages/linter/src/generators/workspace-rules-project/workspace-rules-project.ts b/packages/linter/src/generators/workspace-rules-project/workspace-rules-project.ts index 5bbb6f03fdded..023a93857559b 100644 --- a/packages/linter/src/generators/workspace-rules-project/workspace-rules-project.ts +++ b/packages/linter/src/generators/workspace-rules-project/workspace-rules-project.ts @@ -11,7 +11,7 @@ import { updateWorkspaceConfiguration, } from '@nrwl/devkit'; import { addPropertyToJestConfig, jestProjectGenerator } from '@nrwl/jest'; -import { getRootTsConfigPathInTree } from '@nrwl/workspace/src/utilities/typescript'; +import { getRelativePathToRootTsConfig } from '@nrwl/workspace/src/utilities/typescript'; import { join } from 'path'; import { workspaceLintPluginDir } from '../../utils/workspace-lint-rules'; @@ -34,11 +34,10 @@ export async function lintWorkspaceRulesProjectGenerator(tree: Tree) { }); // Generate the required files - const rootOffset = offsetFromRoot(WORKSPACE_PLUGIN_DIR); generateFiles(tree, join(__dirname, 'files'), workspaceLintPluginDir, { tmpl: '', - offsetFromRoot: rootOffset, - rootTsConfigPath: rootOffset + getRootTsConfigPathInTree(tree), + offsetFromRoot: offsetFromRoot(WORKSPACE_PLUGIN_DIR), + rootTsConfigPath: getRelativePathToRootTsConfig(tree, WORKSPACE_PLUGIN_DIR), }); /** diff --git a/packages/next/src/generators/application/lib/create-application-files.ts b/packages/next/src/generators/application/lib/create-application-files.ts index d4d0c832192ac..6b369bc4a6767 100644 --- a/packages/next/src/generators/application/lib/create-application-files.ts +++ b/packages/next/src/generators/application/lib/create-application-files.ts @@ -4,16 +4,18 @@ import { createAppJsx, createStyleRules, } from './create-application-files.helpers'; -import { generateFiles, names, offsetFromRoot, toJS, Tree } from '@nrwl/devkit'; -import { getRootTsConfigPathInTree } from '@nrwl/workspace/src/utilities/typescript'; +import { generateFiles, names, toJS, Tree } from '@nrwl/devkit'; +import { getRelativePathToRootTsConfig } from '@nrwl/workspace/src/utilities/typescript'; export function createApplicationFiles(host: Tree, options: NormalizedSchema) { const templateVariables = { ...names(options.name), ...options, tmpl: '', - rootTsConfigPath: - offsetFromRoot(options.appProjectRoot) + getRootTsConfigPathInTree(host), + rootTsConfigPath: getRelativePathToRootTsConfig( + host, + options.appProjectRoot + ), appContent: createAppJsx(options.name), styleContent: createStyleRules(), pageStyleContent: `.page {}`, diff --git a/packages/node/src/generators/application/application.ts b/packages/node/src/generators/application/application.ts index 752d349e7fcbb..2ba46d101c419 100644 --- a/packages/node/src/generators/application/application.ts +++ b/packages/node/src/generators/application/application.ts @@ -28,7 +28,7 @@ import { runTasksInSerial } from '@nrwl/workspace/src/utilities/run-tasks-in-ser import { Schema } from './schema'; import { initGenerator } from '../init/init'; -import { getRootTsConfigPathInTree } from '@nrwl/workspace/src/utilities/typescript'; +import { getRelativePathToRootTsConfig } from '@nrwl/workspace/src/utilities/typescript'; export interface NormalizedSchema extends Schema { appProjectRoot: string; @@ -109,13 +109,15 @@ function addProject(tree: Tree, options: NormalizedSchema) { } function addAppFiles(tree: Tree, options: NormalizedSchema) { - const offset = offsetFromRoot(options.appProjectRoot); generateFiles(tree, join(__dirname, './files/app'), options.appProjectRoot, { tmpl: '', name: options.name, root: options.appProjectRoot, - offset, - rootTsConfigPath: offset + getRootTsConfigPathInTree(tree), + offset: offsetFromRoot(options.appProjectRoot), + rootTsConfigPath: getRelativePathToRootTsConfig( + tree, + options.appProjectRoot + ), }); if (options.js) { toJS(tree); diff --git a/packages/nx-plugin/src/generators/e2e-project/e2e.ts b/packages/nx-plugin/src/generators/e2e-project/e2e.ts index eabb9caa006d5..ba2ccc861c5ff 100644 --- a/packages/nx-plugin/src/generators/e2e-project/e2e.ts +++ b/packages/nx-plugin/src/generators/e2e-project/e2e.ts @@ -7,13 +7,12 @@ import { generateFiles, addProjectConfiguration, updateProjectConfiguration, - offsetFromRoot, } from '@nrwl/devkit'; import type { Tree } from '@nrwl/devkit'; import type { Schema } from './schema'; import * as path from 'path'; import { jestProjectGenerator } from '@nrwl/jest'; -import { getRootTsConfigPathInTree } from '@nrwl/workspace/src/utilities/typescript'; +import { getRelativePathToRootTsConfig } from '@nrwl/workspace/src/utilities/typescript'; interface NormalizedSchema extends Schema { projectRoot: string; @@ -52,8 +51,7 @@ function addFiles(host: Tree, options: NormalizedSchema) { generateFiles(host, path.join(__dirname, './files'), options.projectRoot, { ...options, tmpl: '', - rootTsConfigPath: - offsetFromRoot(options.projectRoot) + getRootTsConfigPathInTree(host), + rootTsConfigPath: getRelativePathToRootTsConfig(host, options.projectRoot), }); } diff --git a/packages/react-native/src/generators/application/lib/create-application-files.ts b/packages/react-native/src/generators/application/lib/create-application-files.ts index 5667b5d0a34ff..b3a1f79c754ec 100644 --- a/packages/react-native/src/generators/application/lib/create-application-files.ts +++ b/packages/react-native/src/generators/application/lib/create-application-files.ts @@ -1,14 +1,16 @@ import { generateFiles, offsetFromRoot, toJS, Tree } from '@nrwl/devkit'; -import { getRootTsConfigPathInTree } from '@nrwl/workspace/src/utilities/typescript'; +import { getRelativePathToRootTsConfig } from '@nrwl/workspace/src/utilities/typescript'; import { join } from 'path'; import { NormalizedSchema } from './normalize-options'; export function createApplicationFiles(host: Tree, options: NormalizedSchema) { - const rootOffset = offsetFromRoot(options.appProjectRoot); generateFiles(host, join(__dirname, '../files/app'), options.appProjectRoot, { ...options, - offsetFromRoot: rootOffset, - rootTsConfigPath: rootOffset + getRootTsConfigPathInTree(host), + offsetFromRoot: offsetFromRoot(options.appProjectRoot), + rootTsConfigPath: getRelativePathToRootTsConfig( + host, + options.appProjectRoot + ), }); if (options.unitTestRunner === 'none') { host.delete(join(options.appProjectRoot, `/src/app/App.spec.tsx`)); diff --git a/packages/react-native/src/generators/library/library.ts b/packages/react-native/src/generators/library/library.ts index 01fe14ef91a93..70e067896ff4a 100644 --- a/packages/react-native/src/generators/library/library.ts +++ b/packages/react-native/src/generators/library/library.ts @@ -19,7 +19,10 @@ import { addLinting } from '../../utils/add-linting'; import { addJest } from '../../utils/add-jest'; import { NormalizedSchema, normalizeOptions } from './lib/normalize-options'; import { Schema } from './schema'; -import { getRootTsConfigPathInTree } from '@nrwl/workspace/src/utilities/typescript'; +import { + getRelativePathToRootTsConfig, + getRootTsConfigPathInTree, +} from '@nrwl/workspace/src/utilities/typescript'; export async function reactNativeLibraryGenerator( host: Tree, @@ -156,7 +159,6 @@ function updateBaseTsConfig(host: Tree, options: NormalizedSchema) { } function createFiles(host: Tree, options: NormalizedSchema) { - const rootOffset = offsetFromRoot(options.projectRoot); generateFiles( host, joinPathFragments(__dirname, './files/lib'), @@ -165,8 +167,11 @@ function createFiles(host: Tree, options: NormalizedSchema) { ...options, ...names(options.name), tmpl: '', - offsetFromRoot: rootOffset, - rootTsConfigPath: rootOffset + getRootTsConfigPathInTree(host), + offsetFromRoot: offsetFromRoot(options.projectRoot), + rootTsConfigPath: getRelativePathToRootTsConfig( + host, + options.projectRoot + ), } ); diff --git a/packages/react/src/generators/application/lib/create-application-files.ts b/packages/react/src/generators/application/lib/create-application-files.ts index 650978e8b5c85..9e2276f04c2f5 100644 --- a/packages/react/src/generators/application/lib/create-application-files.ts +++ b/packages/react/src/generators/application/lib/create-application-files.ts @@ -9,7 +9,7 @@ import { updateJson, } from '@nrwl/devkit'; import { join } from 'path'; -import { getRootTsConfigPathInTree } from '@nrwl/workspace/src/utilities/typescript'; +import { getRelativePathToRootTsConfig } from '@nrwl/workspace/src/utilities/typescript'; function updateTsConfig(host: Tree, options: NormalizedSchema) { updateJson( @@ -47,13 +47,15 @@ export function createApplicationFiles(host: Tree, options: NormalizedSchema) { styleSolutionSpecificAppFiles = '../files/css-module'; } - const rootOffset = offsetFromRoot(options.appProjectRoot); const templateVariables = { ...names(options.name), ...options, tmpl: '', - offsetFromRoot: rootOffset, - rootTsConfigPath: rootOffset + getRootTsConfigPathInTree(host), + offsetFromRoot: offsetFromRoot(options.appProjectRoot), + rootTsConfigPath: getRelativePathToRootTsConfig( + host, + options.appProjectRoot + ), }; generateFiles( diff --git a/packages/react/src/generators/library/library.ts b/packages/react/src/generators/library/library.ts index d7722615c91c0..4a468803ec5ed 100644 --- a/packages/react/src/generators/library/library.ts +++ b/packages/react/src/generators/library/library.ts @@ -20,7 +20,10 @@ import { jestProjectGenerator } from '@nrwl/jest'; import { swcCoreVersion } from '@nrwl/js/src/utils/versions'; import { Linter, lintProjectGenerator } from '@nrwl/linter'; import { runTasksInSerial } from '@nrwl/workspace/src/utilities/run-tasks-in-serial'; -import { getRootTsConfigPathInTree } from '@nrwl/workspace/src/utilities/typescript'; +import { + getRelativePathToRootTsConfig, + getRootTsConfigPathInTree, +} from '@nrwl/workspace/src/utilities/typescript'; import * as ts from 'typescript'; import { assertValidStyle } from '../../utils/assertion'; import { @@ -265,7 +268,6 @@ function updateBaseTsConfig(host: Tree, options: NormalizedSchema) { } function createFiles(host: Tree, options: NormalizedSchema) { - const rootOffset = offsetFromRoot(options.projectRoot); generateFiles( host, joinPathFragments(__dirname, './files/lib'), @@ -274,8 +276,11 @@ function createFiles(host: Tree, options: NormalizedSchema) { ...options, ...names(options.name), tmpl: '', - offsetFromRoot: rootOffset, - rootTsConfigPath: rootOffset + getRootTsConfigPathInTree(host), + offsetFromRoot: offsetFromRoot(options.projectRoot), + rootTsConfigPath: getRelativePathToRootTsConfig( + host, + options.projectRoot + ), } ); diff --git a/packages/web/src/generators/application/application.ts b/packages/web/src/generators/application/application.ts index ce51088979afb..f97d9f3062252 100644 --- a/packages/web/src/generators/application/application.ts +++ b/packages/web/src/generators/application/application.ts @@ -20,7 +20,7 @@ import { jestProjectGenerator } from '@nrwl/jest'; import { swcCoreVersion } from '@nrwl/js/src/utils/versions'; import { Linter, lintProjectGenerator } from '@nrwl/linter'; import { runTasksInSerial } from '@nrwl/workspace/src/utilities/run-tasks-in-serial'; -import { getRootTsConfigPathInTree } from '@nrwl/workspace/src/utilities/typescript'; +import { getRelativePathToRootTsConfig } from '@nrwl/workspace/src/utilities/typescript'; import { join } from 'path'; @@ -39,13 +39,15 @@ interface NormalizedSchema extends Schema { } function createApplicationFiles(tree: Tree, options: NormalizedSchema) { - const rootOffset = offsetFromRoot(options.appProjectRoot); generateFiles(tree, join(__dirname, './files/app'), options.appProjectRoot, { ...options, ...names(options.name), tmpl: '', - offsetFromRoot: rootOffset, - rootTsConfigPath: rootOffset + getRootTsConfigPathInTree(tree), + offsetFromRoot: offsetFromRoot(options.appProjectRoot), + rootTsConfigPath: getRelativePathToRootTsConfig( + tree, + options.appProjectRoot + ), }); if (options.unitTestRunner === 'none') { tree.delete(join(options.appProjectRoot, './src/app/app.element.spec.ts')); diff --git a/packages/workspace/src/generators/library/library.ts b/packages/workspace/src/generators/library/library.ts index a7927952f1f07..a9e3b235d20e6 100644 --- a/packages/workspace/src/generators/library/library.ts +++ b/packages/workspace/src/generators/library/library.ts @@ -16,7 +16,10 @@ import { } from '@nrwl/devkit'; import { join } from 'path'; import { runTasksInSerial } from '../../utilities/run-tasks-in-serial'; -import { getRootTsConfigPathInTree } from '../../utilities/typescript'; +import { + getRelativePathToRootTsConfig, + getRootTsConfigPathInTree, +} from '../../utilities/typescript'; import { nxVersion } from '../../utils/versions'; import { Schema } from './schema'; @@ -139,7 +142,7 @@ function createFiles(tree: Tree, options: NormalizedSchema) { strict: undefined, tmpl: '', offsetFromRoot: rootOffset, - rootTsConfigPath: rootOffset + getRootTsConfigPathInTree(tree), + rootTsConfigPath: getRelativePathToRootTsConfig(tree, options.projectRoot), hasUnitTestRunner: options.unitTestRunner !== 'none', }); diff --git a/packages/workspace/src/generators/remove/lib/update-tsconfig.ts b/packages/workspace/src/generators/remove/lib/update-tsconfig.ts index ce1a0c2608721..96f16c5aabf63 100644 --- a/packages/workspace/src/generators/remove/lib/update-tsconfig.ts +++ b/packages/workspace/src/generators/remove/lib/update-tsconfig.ts @@ -19,7 +19,7 @@ export function updateTsconfig( ) { const { appsDir, libsDir, npmScope } = getWorkspaceLayout(tree); - const tsConfigPath = getRootTsConfigPathInTree(tree, false); + const tsConfigPath = getRootTsConfigPathInTree(tree); if (tree.exists(tsConfigPath)) { updateJson(tree, tsConfigPath, (json) => { delete json.compilerOptions.paths[ diff --git a/packages/workspace/src/utilities/typescript.ts b/packages/workspace/src/utilities/typescript.ts index 87049a88183d5..f3218cd9b502e 100644 --- a/packages/workspace/src/utilities/typescript.ts +++ b/packages/workspace/src/utilities/typescript.ts @@ -1,4 +1,4 @@ -import { Tree } from '@nrwl/devkit'; +import { offsetFromRoot, Tree } from '@nrwl/devkit'; import { appRootPath } from '@nrwl/tao/src/utils/app-root'; import { existsSync } from 'fs'; import { dirname, join } from 'path'; @@ -93,24 +93,24 @@ function getCompilerHost(tsConfigPath: string) { return { options, host, moduleResolutionCache }; } -export function getRootTsConfigPathInTree( - tree: Tree, - throwIfNotFound: boolean = true -): string { +export function getRootTsConfigPathInTree(tree: Tree): string | null { for (const path of ['tsconfig.base.json', 'tsconfig.json']) { if (tree.exists(path)) { return path; } } - if (throwIfNotFound) { - throw new Error( - 'Could not find root tsconfig file. Tried with "tsconfig.base.json" and "tsconfig.json".' - ); - } + return 'tsconfig.base.json'; +} + +export function getRelativePathToRootTsConfig( + tree: Tree, + targetPath: string +): string { + return offsetFromRoot(targetPath) + getRootTsConfigPathInTree(tree); } -export function getRootTsConfigFileName(): string | undefined { +export function getRootTsConfigFileName(): string | null { for (const tsConfigName of ['tsconfig.base.json', 'tsconfig.json']) { const tsConfigPath = join(appRootPath, tsConfigName); if (existsSync(tsConfigPath)) { @@ -118,11 +118,11 @@ export function getRootTsConfigFileName(): string | undefined { } } - return undefined; + return null; } -export function getRootTsConfigPath(): string | undefined { +export function getRootTsConfigPath(): string | null { const tsConfigFileName = getRootTsConfigFileName(); - return tsConfigFileName ? join(appRootPath, tsConfigFileName) : undefined; + return tsConfigFileName ? join(appRootPath, tsConfigFileName) : null; }