我有一个使用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',
},