如何使用nodejs import 获得别名

Poy*_*man 11 import alias require node.js

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

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

  // package.json
  "dependencies": {
    "~src": "file:.",
  }
Run Code Online (Sandbox Code Playgroud)

在我的源代码中

const someCode = require('~src/absolute/path/someCode');
Run Code Online (Sandbox Code Playgroud)

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

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

GOT*_*O 0 15

我相信在当前版本的 Node 中为文件夹添加别名的首选方法是使用subpath imports

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

"imports": {
  "#src/*": "./*.js"
}
Run Code Online (Sandbox Code Playgroud)

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

import someCode from '#src/some/path/someCode';
Run Code Online (Sandbox Code Playgroud)

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

"imports": {
  "#src/*": "./*.js",
  "#somepath/*": "./some/path/*.js"
}
Run Code Online (Sandbox Code Playgroud)

并在导入文件中:

import someCode from '#somepath/someCode';
Run Code Online (Sandbox Code Playgroud)