From b64c49a45a87e9e391e539f5650122f61783ee45 Mon Sep 17 00:00:00 2001 From: Sakina <59400654+fz6m@users.noreply.github.com> Date: Fri, 12 Jul 2024 10:42:21 +0800 Subject: [PATCH] fix: use relative path in tsconfig (#12557) --- .../preset-umi/src/features/tmpFiles/tmpFiles.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/preset-umi/src/features/tmpFiles/tmpFiles.ts b/packages/preset-umi/src/features/tmpFiles/tmpFiles.ts index c61e875af82b..305727e5458c 100644 --- a/packages/preset-umi/src/features/tmpFiles/tmpFiles.ts +++ b/packages/preset-umi/src/features/tmpFiles/tmpFiles.ts @@ -1,6 +1,6 @@ import { importLazy, lodash, winPath } from '@umijs/utils'; import { existsSync, readdirSync } from 'fs'; -import { basename, dirname, join } from 'path'; +import { basename, dirname, join, relative } from 'path'; import { RUNTIME_TYPE_FILE_NAME } from 'umi'; import { getMarkupArgs } from '../../commands/dev/getMarkupArgs'; import { TEMPLATES_DIR } from '../../constants'; @@ -23,6 +23,8 @@ export default (api: IApi) => { }, }); + const TSCONFIG_FILE_NAME = 'tsconfig.json'; + api.onGenerateFiles(async (opts) => { const rendererPath = winPath( await api.applyPlugins({ @@ -47,6 +49,12 @@ export default (api: IApi) => { const isTs5 = api.appData.typescript.tsVersion?.startsWith('5'); const isTslibInstalled = !!api.appData.typescript.tslibVersion; + // https://github.com/umijs/umi/issues/12545 + const tsconfigFilePath = join(api.paths.absTmpPath, TSCONFIG_FILE_NAME); + const relativeUmiDirPath = winPath( + relative(dirname(tsconfigFilePath), umiDir), + ); + // x 1、basic config // x 2、alias // 3、language service platform @@ -81,7 +89,7 @@ export default (api: IApi) => { paths: { '@/*': [`${srcPrefix}*`], '@@/*': [`${umiTempDir}/*`], - [`${api.appData.umi.importSource}`]: [umiDir], + [`${api.appData.umi.importSource}`]: [relativeUmiDirPath], [`${api.appData.umi.importSource}/typings`]: [ `${umiTempDir}/typings`, ], @@ -110,7 +118,7 @@ export default (api: IApi) => { api.writeTmpFile({ noPluginDir: true, - path: 'tsconfig.json', + path: TSCONFIG_FILE_NAME, content: JSON.stringify(umiTsConfig, null, 2), });