如何在 TypeScript 声明中使用 Webpack 别名

Jos*_*hua 6 typescript webpack

我正在使用 TypeScript 编写 NPM 包,但找不到在 TypeScript 声明中转换 Webpack 别名的方法。

webpack.config.js

{
  // ...more Webpack configurations
  resolve: {
  extensions: [".ts", ".js"],
  alias: {
    "@": resolvePath("src")
  }
}
Run Code Online (Sandbox Code Playgroud)

配置文件

{
  "compilerOptions": {
    // More options
    "paths": {
      "@/*": ["src/*"]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用babel-loaderwith@babel/preset-typescript但它不输出声明文件。

tsc --emitDeclarationOnly发出声明文件,但不会替换@/为正确的路径。对于ts-loader.

我可以在 Jest 中使用moduleNameMapper. 如果我可以让它工作构建声明文件,我就不再需要编写类似../../../../model.

我在网上找到的大多数答案都是关于编译 JavaScript 文件的,我对此没有问题。任何帮助将不胜感激。

Jos*_*hua 6

我终于找到解决办法了。你需要ttypescripttypescript-transform-paths。您将以下内容添加compilerOptionstsconfig.json

"plugins": [
  { "transform": "typescript-transform-paths", "afterDeclarations": true }
]
Run Code Online (Sandbox Code Playgroud)

并运行

ttsc --emitDeclarationOnly
Run Code Online (Sandbox Code Playgroud)

我就此写了一篇文章。