如何使用nodejs导入别名



我有一个使用node.js v16的项目,越来越多的npm-lib不再与require兼容,需要与import一起使用。

到目前为止,我一直使用package.json将我的根目录作为别名

// package.json
"dependencies": {
"~src": "file:.",
}

在我的源代码中

const someCode = require('~src/absolute/path/someCode');

这不适用于导入,而且对于我所做的测试,我还没有找到任何解决方案来使其适用于导入。

你已经遇到这种问题了吗?找到解决方案了吗?

我认为在当前版本的Node中,别名文件夹的首选方式是使用子路径导入。

例如,您可以将根文件夹别名为#src(导入映射必须始终以#开头(。为此,请在您的package.json中添加以下导入部分:

"imports": {
"#src/*": "./*.js"
}

现在,假设您的包中有一个文件some/path/someCode.js,您可以这样导入它:

import someCode from '#src/some/path/someCode';

您也可以使用相同的语法映射子文件夹:

"imports": {
"#src/*": "./*.js",
"#somepath/*": "./some/path/*.js"
}

在导入文件中:

import someCode from '#somepath/someCode';

请注意,如果使用typescript,还必须更新tsconfig。假设您想使用@helpers/whatever而不是../../../helpers/whatever


"baseUrl": "src", # or whatever your base directory is
"paths": {
"@helpers/*": ["helpers/*"]
},

如果你正在使用jest,你还需要更新你的jest配置

moduleNameMapper: {
'^@helpers/(.*)$': '<rootDir>/src/helpers/$1',
},

最新更新