如何配置TypeScript编译器将绝对路径转为相对路径
解决TSC编译时将绝对路径转为相对路径的问题
TSC本身的baseUrl仅用于编译阶段的模块解析,不会自动把绝对路径替换成相对路径,要实现这个需求,你可以用以下两种工具方案:
方案一:使用tsconfig-paths工具后处理
这个工具会在TSC编译完成后,批量替换dist目录里所有文件的路径:
- 安装开发依赖:
npm install --save-dev tsconfig-paths
- 修改
package.json的编译脚本,先执行TSC编译,再用tscpaths替换路径:
{ "scripts": { "build": "tsc && tscpaths -p tsconfig.json -s ./ -o ./dist" } }
-p指定你的tsconfig配置文件-s源码根目录(对应baseUrl的.)-o编译输出目录(对应outDir的./dist)
执行npm run build后,dist里的JS和d.ts文件中的绝对路径(比如import 'utils')会被自动替换为正确的相对路径(比如../utils)。
方案二:使用编译插件实时转换
通过typescript-transform-paths插件配合ttypescript(TSC的增强版,支持自定义插件),在编译过程中直接转换路径:
- 安装开发依赖:
npm install --save-dev ttypescript typescript-transform-paths
- 修改
tsconfig.json,在compilerOptions里添加插件配置,同时处理源码和声明文件:
{ "compilerOptions": { // 保留你原来的所有配置 "plugins": [ { "transform": "typescript-transform-paths" }, { "transform": "typescript-transform-paths", "afterDeclarations": true } ] } }
- 修改
package.json的编译脚本,用ttsc代替tsc:
{ "scripts": { "build": "ttsc" } }
这样编译时插件会自动把源码里的绝对路径转为相对路径,同时更新对应的d.ts文件,无需额外的后处理步骤。
内容的提问来源于stack exchange,提问作者milad
相关产品推荐
相关产品推荐

