如何在tsconfig.json中为@filesTwo/environments配置差异化路径?
解决tsconfig paths覆盖规则的配置问题
针对你的需求,最简洁的解决方式是将特殊路径规则放在通用规则的前面(tsconfig的paths按配置顺序匹配,优先级从上到下),同时调整目标路径的写法适配插件要求:
情况1:导入@filesTwo/environments(无后续子路径)
如果你的导入是直接引用@filesTwo/environments,需要指向具体的../../environments/src目录,配置如下:
{ "extends": "./tsconfig.json", "compilerOptions": { "declaration": false, "baseUrl": "./", "paths": { "@filesTwo/environments": ["../../environments/src"], "@filesOne/*": ["../../filesOne/*/src"], "@filesTwo/*": ["../../filesTwo/*/src"] } } }
情况2:导入@filesTwo/environments/xxx(带子路径)
如果是要让@filesTwo/environments/xxx这类带子路径的导入指向../../environments/xxx/src,则需要给规则加上通配符:
{ "extends": "./tsconfig.json", "compilerOptions": { "declaration": false, "baseUrl": "./", "paths": { "@filesTwo/environments/*": ["../../environments/*/src"], "@filesOne/*": ["../../filesOne/*/src"], "@filesTwo/*": ["../../filesTwo/*/src"] } } }
之前配置报错的原因
你之前的写法"@filesTwo/environments": ["../../environments/*/src"]存在两个问题:
- 精确匹配的模块名(无
*)对应了带通配符的目标路径,插件esbuild-ts-paths无法将其解析为有效的具体文件/目录路径,导致返回非绝对路径的错误。 - 特殊规则放在了通用规则后面,即使写法正确也会被
@filesTwo/*的规则优先匹配。
内容的提问来源于stack exchange,提问作者George Ji
相关产品推荐
相关产品推荐

