【发布时间】: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-node 和 tsconfig-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