【问题标题】:How do I transpile aliased paths in TypeScript to JavaScript?如何将 TypeScript 中的别名路径转换为 ​​JavaScript?
【发布时间】:2022-11-30 05:17:49
【问题描述】:

我有一个 TypeScript 项目,我正在尝试将其转换为使用路径别名的可执行 JavaScript。这是我正在处理的 NPM 包所必需的。

例如,这里从我的 lib 目录导入一个方法,而不通过相对路径引用它:

import { hexify } from '@lib/utils/conversion';

通常我会使用tsconfig-paths来注册路径别名,当使用ts-node-dev --files -r tsconfig-paths/register ./src/index.ts之类的命令从入口点运行应用程序时,或者在生产模式下使用node -r ts-node/register/transpile-only -r tsconfig-paths/register ./dist/index.js。但在这种情况下我想成功地将它转换为 JavaScript,以便编译器自动将路径别名转换为正确的相对路径因此不需要使用 ts-nodetsconfig-paths 来成功运行 JavaScript 代码。

我的 tsconfig.json 文件看起来像这样以获得一些额外的上下文:

{
  "ts-node": {
    "files": true
  },
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "strict": true,
    "rootDir": "src",
    "outDir": "dist",
    "moduleResolution": "node",
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "noImplicitReturns": true,
    "strictFunctionTypes": true,
    "strictPropertyInitialization": false,
    "resolveJsonModule": true,
    "baseUrl": "./",
    "paths": {
      "@src/*": ["src/*"],
      "@middleware/*": ["src/middleware/*"],
      "@services/*": ["src/services/*"],
      "@routes/*": ["src/routes/*"],
      "@controllers/*": ["src/controllers/*"],
      "@exchanges/*": ["src/api/exchanges/*"],
      "@utils/*": ["src/utils/*"],
      "@api/*": ["src/api/*"],
      "@lib/*": ["src/lib/*"],
      "@app": ["src/app/index.ts"],
      "@singleton/*": ["src/singleton/*"],
      "@constants/*": ["src/constants/*"]
    }
  },
  "exclude": ["junk"]
}

然而,在构建这个项目时,我的 NPM 包无法理解我的路径别名,我可以做些什么来让我的 NPM 包工作,还是我应该使用别名更改我所有的 TypeScript 导入,而不是像这个例子那样使用相对路径以下:

import { hexify } from '../lib/utils/conversion.ts'

【问题讨论】:

    标签: javascript typescript npm tsc tsconfig-paths


    【解决方案1】:

    目前,没有办法将此作为 tsc 构建的一部分。

    有许多模块可以为您完成任务,例如ts-alias。实际上,在 npm 上搜索“typescript path alias”可以找到 66 个这样的模块:https://www.npmjs.com/search?q=typescript%20path%20alias

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-24
      • 2017-03-20
      • 2022-08-08
      • 1970-01-01
      • 2016-11-30
      • 2015-12-26
      • 2022-10-25
      • 2016-06-21
      相关资源
      最近更新 更多