将打字稿路径别名编译为 NPM 发布的相对路径?
Posted
技术标签:
【中文标题】将打字稿路径别名编译为 NPM 发布的相对路径?【英文标题】:Compiling typescript path aliases to relative paths for NPM publishing? 【发布时间】:2018-12-23 12:36:34 【问题描述】:我有一个使用路径进行导入的typescript project。例如:
"paths":
"@example/*": ["./src/*"],
因此项目可以直接从 using 语句中导入文件,例如:
import foo from "@example/boo/foo";
为了发布到 NPM,我正在编译 typescript 文件,然后将结果复制到 dist 文件夹。因此,所有*.d.ts
和相应的*.js
文件都在 dist 文件夹中。我还将package.json
复制到 dist 文件夹中。
我现在通过生成一个新的 typescript 项目然后运行 npm i -S ../example/dist
来测试它,以便安装该项目并尝试运行一些已编译的 typescript 代码。
但是,相对导入不再起作用。例如,如果boo.ts
依赖于foo.ts
,它会说它无法解析foo.ts
。
当我查看*.d.ts
文件时,它们包含的路径与源代码在编译之前使用的路径相同。是否可以将这些转换为相对路径?
更新
我看起来好像为 Node 生成相对路径是 Typescript 不会自动执行的。如果您和我一样喜欢此功能,请提供feedback on this bug report。
【问题讨论】:
【参考方案1】:作为对 arhnee 建议的简短跟进,截至 2020 年 8 月,微软似乎仍然出于任何原因拒绝实施自定义转换器,因此这些模块仍然相关。
因此,对于未来的读者,您可以通过以下方式实际将 TS 路径别名编译为相对路径。 ttypescript
只是一个转换器框架,需要“路径转换器”才能实际转换 TS 路径别名。因此您需要同时安装ttypescript
和typescript-transform-paths
。
npm i --save ttypescript typescript-transform-paths
然后,只需将以下属性添加到tsconfig.json
中的compilerOptions
对象,即可轻松指定用法:
"plugins": [
"transform": "typescript-transform-paths"
]
最后,运行 ttsc
而不是 tsc
。
【讨论】:
【参考方案2】:有一个名为ttypescript 的项目可供您使用。如果您将它与模块 typescript-transform-paths 一起使用,我相信它会实现您想要的。
【讨论】:
以上是关于将打字稿路径别名编译为 NPM 发布的相对路径?的主要内容,如果未能解决你的问题,请参考以下文章
带有 vscode 的打字稿路径在 ctrl 单击时解析错误