From 5dde7c60e4048a42ec2d41be5d5849e0a5e8d441 Mon Sep 17 00:00:00 2001 From: Martin Hochel Date: Fri, 25 Nov 2022 17:58:29 +0100 Subject: [PATCH] feat(scripts): add v8 package compilation if TS path aliases are used --- scripts/tasks/ts.ts | 11 ++++++++++- scripts/tasks/utils.ts | 10 ++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/scripts/tasks/ts.ts b/scripts/tasks/ts.ts index 94493729686123..df18fd66d53a55 100644 --- a/scripts/tasks/ts.ts +++ b/scripts/tasks/ts.ts @@ -1,7 +1,7 @@ import * as path from 'path'; import { tscTask, TscTaskOptions, logger } from 'just-scripts'; import { getJustArgv } from './argv'; -import { getTsPathAliasesConfig } from './utils'; +import { getTsPathAliasesConfig, getTsPathAliasesConfigV8 } from './utils'; const libPath = path.resolve(process.cwd(), 'lib'); const srcPath = path.resolve(process.cwd(), 'src'); @@ -22,6 +22,15 @@ function prepareTsTaskConfig(options: TscTaskOptions) { options.sourceMap = true; } + const { isUsingV8pathAliases, tsConfigFileV8 } = getTsPathAliasesConfigV8(); + + if (isUsingV8pathAliases) { + logger.info(`📣 TSC: V8 package is using TS path aliases. Overriding tsconfig settings.`); + options.baseUrl = '.'; + options.rootDir = './src'; + options.project = tsConfigFileV8; + } + const { isUsingTsSolutionConfigs, tsConfigFile, tsConfig } = getTsPathAliasesConfig(); if (isUsingTsSolutionConfigs && tsConfig) { diff --git a/scripts/tasks/utils.ts b/scripts/tasks/utils.ts index 60ac3cf3daaa32..80f4bec8a8978b 100644 --- a/scripts/tasks/utils.ts +++ b/scripts/tasks/utils.ts @@ -2,6 +2,7 @@ import * as fs from 'fs'; import * as path from 'path'; import * as jju from 'jju'; import type { TscTaskOptions } from 'just-scripts'; +import { stripJsonComments } from '@nrwl/devkit'; export function getTsPathAliasesConfig() { const cwd = process.cwd(); @@ -17,6 +18,15 @@ export function getTsPathAliasesConfig() { return { tsConfig, isUsingTsSolutionConfigs, tsConfigFile, tsConfigPath, packageJson }; } +export function getTsPathAliasesConfigV8() { + const cwd = process.cwd(); + const tsConfigFile = 'tsconfig.json'; + const tsConfigPath = path.join(cwd, `./${tsConfigFile}`); + const tsConfig = JSON.parse(stripJsonComments(fs.readFileSync(tsConfigPath, 'utf-8'))); + const isUsingV8pathAliases = tsConfig.extends && tsConfig.extends.includes('tsconfig.base.v8.json'); + return { isUsingV8pathAliases, tsConfigFileV8: tsConfigFile }; +} + const packagesWithInvalidTypes = [ /** * @see @storybook/api/dist/ts3.9/lib/stories.d.ts:1:8 - `import React from 'react'`