将打字稿路径别名编译为NPM发布的相对路径?

时间:2018-07-16 02:13:17

标签: javascript node.js typescript npm

我有一个typescript project,它使用导入路径。例如:

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

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

import { foo } from "@example/boo/foo";

要发布到NPM,我要编译打字稿文件,然后将结果复制到dist文件夹。因此,所有*.d.ts和相应的*.js文件都位于dist文件夹中。我还将package.json复制到dist文件夹。

我现在通过生成一个新的打字稿项目来进行测试,然后运行npm i -S ../example/dist,以安装该项目并尝试运行一些已编译的打字稿代码。

但是,相对进口不再起作用。例如,如果boo.ts依赖于foo.ts,它将说它无法解析foo.ts

当我查看*.d.ts文件时,它们包含的路径与编译源代码之前使用的路径相同。是否有可能将它们变成相对路径?

更新

我似乎为Node生成相对路径是Typescript无法自动执行的。如果您希望像我一样想要此功能,请提供feedback on this bug report

2 个答案:

答案 0 :(得分:3)

作为对Arhnee建议的简短跟进,似乎到2020年8月,微软仍然出于任何原因拒绝实施自定义转换器,因此这些模块仍然有用。

对将来的读者来说,这是将TS路径别名实际编译为相对路径的方法。 ttypescript只是一个转换器框架,需要一个“路径转换器”才能实际转换TS路径别名。因此,您将需要同时安装ttypescripttypescript-transform-paths

npm i --save ttypescript typescript-transform-paths

然后,简单地通过在compilerOptions中的tsconfig.json对象中添加以下属性来指定用法即可:

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

最后,运行ttsc而不是tsc

答案 1 :(得分:1)

您可以使用一个名为ttypescript的项目。如果您将其与模块typescript-transform-paths配合使用,我相信它将满足您的要求。