如何使用 nodejs 导入别名

How to have aliases with nodejs import

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

直到现在我一直在使用 package.json 将我的根目录作为别名

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

在我的源代码中

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

这不适用于导入,并且根据我所做的测试,我还没有找到任何解决方案来使其与导入一起使用。

你遇到过这样的问题吗?并找到了解决方案?

我认为在当前版本的 Node 中为文件夹设置别名的首选方法是使用 subpath imports

例如,您可以将根文件夹别名为 #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';