father icon indicating copy to clipboard operation
father copied to clipboard

能否手动指定 tsconfig 路径

Open Col0ring opened this issue 3 years ago • 12 comments

在 monorepo 项目中使用 import() 动态引入包时打包结果有误(将 ’@xxx/foo‘ 替换为了 'packages/foo/', foo 是包名),测试发现是读取了 tsconfig.json 中的 paths 导致的,去掉 paths 即可。

预期结果是在开发过程中仍然保留 tsconfig 的 paths,希望提供一个手动指定 tsconfig 的配置项。

Col0ring avatar Apr 17 '23 12:04 Col0ring

是在 monorepo 根目录执行的 father?

PeachScript avatar Apr 19 '23 09:04 PeachScript

是在 monorepo 根目录执行的 father?

根目录运行统一的构建命令,子目录执行 father build,感觉应该是动态导入的 bug,不过我感觉提供一个手动指定 tsconfig 的配置项其实相对合理一点,这样也不会和 vscode 这类编辑器的 tsconfig 读取路径冲突。

Col0ring avatar Apr 19 '23 10:04 Col0ring

可以看下 father 是不是最新版,之前做过一个优化,超出 cwd 的 paths 不会做 replace,子包 A 肯定在子包 B 的 cwd 之外,ref: https://github.com/umijs/father/commit/18dacf17b1ab4c42cc64e1e30e62842baf0ed5f4

我感觉提供一个手动指定 tsconfig 的配置项其实相对合理一点

这个暂时不会考虑,尽量保持用法和框架实现的简单,除非未来有解不了的场景

PeachScript avatar Apr 19 '23 10:04 PeachScript

解决了,核心问题就是在最外层的 tsconfig.json 内部写了 baseUrl,但是包内没写,extends 的时候使用了外部的 baseUrl,加上 baseUrl: '.'正常了,但是这样也导致开发模式下的 tsconfig.json paths 完全失效了。

复现仓库:https://github.com/Col0ring/father-tsconfig-example

Col0ring avatar Apr 19 '23 12:04 Col0ring

mark

wozien avatar May 22 '23 08:05 wozien

我也遇到这个问题了,请问有什么比较好的方案吗

解决了,核心问题就是在最外层的 tsconfig.json 内部写了 baseUrl,但是包内没写,extends 的时候使用了外部的 baseUrl,加上 baseUrl: '.'正常了,但是这样也导致开发模式下的 tsconfig.json paths 完全失效了。

复现仓库:https://github.com/Col0ring/father-tsconfig-example

wozien avatar Jun 19 '23 08:06 wozien

解决了,核心问题就是在最外层的 tsconfig.json 内部写了 baseUrl,但是包内没写,extends 的时候使用了外部的 baseUrl,加上 baseUrl: '.'正常了,但是这样也导致开发模式下的 tsconfig.json paths 完全失效了。

复现仓库:https://github.com/Col0ring/father-tsconfig-example

一样的问题,我的诉求还是:能否手动指定 tsconfig 路径?

AllenPan03 avatar Jul 06 '23 03:07 AllenPan03

求支持手动指定

PopperLi avatar Aug 28 '23 07:08 PopperLi

使用 preact/compat 的时候也是有这个问题,

import React from 'react'

变成了

import React from "../../packages/foo/node_modules/preact/compat/src/index.d.ts";

应该是:

import React from "../../../node_modules/preact/compat/src/index.d.ts"

cbbfcd avatar Apr 29 '24 06:04 cbbfcd

看了下 tsconfig-paths, 可以使用TS_NODE_PROJECT设置tsconfig路径 例如TS_NODE_PROJECT=tsconfig.build.json father build

hzzcc avatar Jun 27 '24 06:06 hzzcc

看了下 tsconfig-paths, 可以使用TS_NODE_PROJECT设置tsconfig路径 例如TS_NODE_PROJECT=tsconfig.build.json father build

这样设置不行啊, 生成类型文件时又去调用ts.findConfigFile找配置文件 image image

zhiaiing avatar Sep 13 '24 07:09 zhiaiing

我有一个类似的需求, 需要构建不同tsconfig的生成的pkg, 所以如果能将这里的findConfigFile第三个参数configName暴露允许配置, 则可以完美解决我的问题 https://github.com/umijs/father/blob/0cdea25ba473c73e78f56eec264a747bb7c25c18/src/builder/bundless/dts/index.ts#L16

fightZy avatar Jan 14 '25 04:01 fightZy