我有一个TypeScript项目,我正试图将其转换为使用路径别名的可执行JavaScript这是我正在处理的NPM包所必需的。
例如,从我的lib
目录导入一个方法,而不通过相对路径引用它:
import { hexify } from '@lib/utils/conversion';
通常,当使用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
时,我会使用tsconfig-paths
来注册路径别名。但在这种情况下,我希望成功地将其转换为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'
目前,没有办法将此作为tsc
构建的一部分。
有许多模块将为您完成任务,例如ts-alias
。事实上,在npm上搜索";typescript路径别名";给出了66个这样的模块:https://www.npmjs.com/search?q=typescript%20path%20alias