SWC 无法解析导入路径别名

min*_*now 7 swc typescript swc-compiler

我有一个打字稿项目,我正在使用 swc 进行编译。我无法让 swc 解析 或 中定义的路径tsconfig.json别名.swcrc。eslint 可以正确解析模块别名,并且在未将 swc 指定为编译器的情况下运行 ts-node 时,可以正确解析模块别名。

鉴于此拉取请求,似乎 swc 应该能够解析tsconfig.json并支持 中定义的路径别名.swcrc。然而,似乎人们在使用此功能后也遇到了与我类似的问题,尽管那是两年前的事了,我无法想象此后还没有解决方案。

另外,在一个奇怪的旁注中,实现 TSConfigResolver 的 PR 的作者在他的 PR 合并一年后的一个问题中提到了 swc“不考虑 tsconfig”。虽然这不应该是我的问题的根源,因为我在中指定了相同的路径别名.swcrc

swc 文档非常模糊,没有提及任何有关模块别名或解析 tsconfig 的内容,除此之外,jsc.baseUrl它们jsc.paths是编译选项,并且它们与 tsconfig 语法匹配。

任何帮助或指导将不胜感激,谢谢!

tsconfig.json

{
  "compilerOptions": {
    "target": "es2020",
    "module": "ESNext",
    "moduleResolution": "node",
    "baseUrl": "./",
    "paths": {
      "$lib/*": ["src/lib/*"]
    },
    "outDir": "./dist",
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true,
    "strict": true,
    "skipLibCheck": true
  },
  "ts-node": {
    "swc": true
  },
  "exclude": ["node_modules", "dist"]
}
Run Code Online (Sandbox Code Playgroud)

.swcrc

{
  "$schema": "https://json.schemastore.org/swcrc",
  "jsc": {
    "baseUrl": "./",
    "paths": {
      "$lib/*": ["src/lib/*"]
    }
  },
  "module": {
    "type": "es6"
  }
}
Run Code Online (Sandbox Code Playgroud)

package.json

{
  "type": "module",
  "devDependencies": {
    "@swc/cli": "^0.1.62",
    "@swc/core": "^1.3.35",
    "ts-node": "^10.9.1",
    "typescript": "^4.9.5"
  }
}
Run Code Online (Sandbox Code Playgroud)

swc . -d ./dist从项目根目录运行时出现以下错误:

CustomError: Cannot find package '$lib' imported from /root/projects/example/src/index.ts

Fox*_*Pro 2

它在最近的拉取请求中得到了修复。确保在 tsconfig.json 和 .swcrc 中指定了路径 https://github.com/swc-project/swc-node/pull/723