【发布时间】:2022-01-06 19:54:03
【问题描述】:
我想在 typescript/node/express 项目中设置导入路径别名,而不使用其他包,如 tsconfig-paths 和 link-module-alias。我想使用内置的 nodejs 功能来做到这一点(Typscript 别名已经完成)。
基本上:
// Change
import { myFn } from '../../../utils';
// To
import { myFn } from '#this/utils';
我的一线希望是节点的subpath imports。从理论上讲,我可以将其添加到我的package.json:
"imports": {
"#this/*": "./dist/*"
}
问题来了
这适用于显式导入*.js 文件,但对于隐含的index.js(即Folders as modules)确实会失败
// Works
import { myFn } from '#this/utils/index.js';
// Does not work
import { myFn } from '#this/utils';
但是,我希望节点能够像这样解析导入:
- 如果 utils 是一个目录,导入应该解析为
*/utils/index.js - 如果 utils 是一个文件,导入应该解析为
*/utils.js
我的第一个想法是更新 package.json 导入以包含所有可能性,但这不受支持:
"imports": {
"#this/*": [
"./dist/*",
"./dist/*.js",
"./dist/*/index.js"
]
}
另一个选项似乎是为每个目录定义一个exports 条目,但这是不可扩展的。
【问题讨论】:
标签: javascript node.js typescript