Node.js 13.2 版允许 ESM 模块和一个package.json名为的新字段exports来选择和重写导出的文件。
在 13.2 之前,我从dist我的库文件夹中导入文件:
import myfile from 'mylibrary/dist/myfile'
Run Code Online (Sandbox Code Playgroud)
在 13.2 中,我将此添加到我的package.json:
exports: {
"./": "./dist/"
}
Run Code Online (Sandbox Code Playgroud)
并尝试导入文件:
import myfile from 'mylibrary/myfile'
Run Code Online (Sandbox Code Playgroud)
但是 Typescript 引发了 2307 错误,说未找到该模块。
所以我的目标是在 Typescript 中创建一个库。我的目的是将库的核心部分拆分为子模块,如 RxJS 或 Angular Material。
RxJS 和 Angular 都支持这样的导入:
// RxJS
import { map, filter } from 'rxjs/operators';
// Angular
import { MatButtonModule } from '@angular/material/button';
Run Code Online (Sandbox Code Playgroud)
但是,我自己无法复制这一点。
我的目标是做类似的事情,并允许您导入一个类 import { foo } from 'package/bar;
我在 Github 上查看了 RxJS 的源代码,并尝试复制他们所做的工作,但它不起作用。
该库编译得很好,但是当我开始导入它时,我总是遇到Cannot resolve dependency 'package/foo'错误。同时做import { test } from package(没有子模块部分)完全正常。
我试过在 tsconfig 中使用路径无济于事。如果那是答案,那么我做错了。
我该怎么做?