我有一个使用导入路径的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路径别名。因此,您需要同时安装ttypescript
和typescript-transform-paths
。
npm i --save ttypescript typescript-transform-paths
然后,只需在tsconfig.json
中的compilerOptions
对象中添加以下属性即可轻松指定用法:
"plugins": [
{ "transform": "typescript-transform-paths" }
]
最后,运行ttsc
而不是tsc
。
有一个名为ttypescript的项目可以用于此。如果你将它与模块typescript转换路径一起使用,我相信它会达到你想要的效果。