npm import from same index.js 当前文件从中导出

npm import from same index.js that the current file is exported from

假设我创建了一个名为 @myscope/blurfl 的 npm 模块,其中包含几个 类:A,在 A.js 中定义,B 在 B.js 中定义,它们是均通过 blurfl/index.js:

重新导出
@myscope/
    blurfl/
        A.js
        B.js
        index.js

A.js:

export class A {...}

B.js:

import { A } from './A.js';
export class B {...}

index.js:

export * from "./A.js";
export * from "./B.js";

我更愿意使用 import { A } from '@myscope/blurfl' 而不是 import {A} from './A.js' 来保持代码更清晰(并且更容易将导出移动到不同的文件),但是 @myscope/blurfl 显然是不是 @myscope/blurfl 本身的依赖项,因此如果我 运行 node index.js 检查缺少的依赖项,节点模块解析器找不到它。

是否有任何方法可以在不使用项目的显式文件名的情况下导入从同一 index.js 文件共同导出的另一个项目?

我假设您使用的是 Node.js 的当前版本(12 LTS 或更高版本)。 确保 package.json 中包的 "name" 确实是 "@myscope/blurfl"(而不仅仅是 "blurfl")。 现在,将 "exports" 部分添加到 package.json 指定主导出的相对路径,即

"exports": {
    ".": "./index.js"
}

您现在应该也可以在您的包中使用 import { A } from '@myscope/blurfl'

所以,总结一下:

  • 使用 Node 12 或更高版本。
  • 检查 package.json 中的 "name"
  • "exports" 部分添加到 package.json 以指示 main entry point export