我希望在一个 TypeScript/Node/Express 项目中设置导入路径别名,而不使用其他包,比如 tsconfig-paths 和 link-module-alias。我想要使用内置的 Node.js 功能来实现这一点(TypeScript 的别名已经完成)。
基本上:
我有一个希望,就是使用Node.js的子路径导入。理论上,我只需要在我的
另一种选择似乎是为每个目录定义一个
基本上:
// Change
import { myFn } from '../../../utils';
// To
import { myFn } from '#this/utils';
我有一个希望,就是使用Node.js的子路径导入。理论上,我只需要在我的
package.json
文件中添加以下内容即可:(参见文档)。"imports": {
"#this/*": "./dist/*"
}
问题在这里
这适用于显式导入*.js
文件,但对隐含的index.js
(即文件夹作为模块)则失败。
// Works
import { myFn } from '#this/utils/index.js';
// Does not work
import { myFn } from '#this/utils';
然而,我希望node按照以下方式解析导入:
- 如果utils是一个文件夹,则导入应该解决为
*/utils/index.js
- 如果utils是一个文件,则导入应该解决为
*/utils.js
我的第一想法是更新package.json中的import,以包括所有可能性,但这不受支持:
"imports": {
"#this/*": [
"./dist/*",
"./dist/*.js",
"./dist/*/index.js"
]
}
另一种选择似乎是为每个目录定义一个
exports
条目,但这种方法不具有可扩展性。