将typescript路径别名编译为NPM发布的相对路径



我有一个使用导入路径的typescript项目。例如:

"paths": {
"@example/*": ["./src/*"], 
}

因此,项目可以使用以下语句直接导入文件:

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不会自动执行的事情。如果你像我一样想要这个功能,请提供关于这个错误报告的反馈。

作为arhnee建议的简短后续,截至2020年8月,微软似乎仍然出于任何原因拒绝实现自定义转换器,因此这些模块仍然相关。

因此,对于未来的读者来说,以下是如何将TS路径别名实际编译为相对路径的方法。CCD_ 9仅仅是一个转换器框架;路径变换器";以便实际转换TS路径别名。因此,您需要同时安装ttypescripttypescript-transform-paths

npm i --save ttypescript typescript-transform-paths

然后,只需在tsconfig.json中的compilerOptions对象中添加以下属性即可轻松指定用法:

"plugins": [
{ "transform": "typescript-transform-paths" }
]

最后,运行ttsc而不是tsc

有一个名为ttypescript的项目可以用于此。如果你将它与模块typescript转换路径一起使用,我相信它会达到你想要的效果。

最新更新