繁体   English   中英

导入子文件夹在 typescript npm package

[英]Importing subfolders in a typescript npm package

我正在为npm创建一个 package,但我希望通过以下方式导入它:

import myPackage from 'my-package';
import { subFunction1, subFunction2 } from 'my-package/subfunctions';

当尝试使用我创建的 package 时,它会正确加载根文件,但会为子文件夹产生以下错误:

找不到模块“我的包/子功能”

我当前发布到 npm 的文件夹结构是:

index.js
index.d.ts
subfunctions/
  sub-function-1.js
  sub-function-1.d.ts
  sub-function-2.js
  sub-function-2.d.ts
  index.js
  index.d.ts

我在package.json文件上的类型声明如下:

"types": [
  "./dist/index.d.ts",
  "./dist/subfunctions/index.d.ts",
],

下面我展示了文件index.d.ts (1) 和subfunctions/index.d.ts (2) 的内容:

(1)

import myCode from './lib/my-code';
export default myCode;

(2)

export { subFunction1 } from './sub-function-1';
export { subFunction2 } from './sub-function-2';

如何从此子文件夹导入?

我知道这是一个非常古老的问题,但我想我会分享这个答案。 看起来package.json中有一个更新的字段, "exports" (自 Node.js 12+,~2019 起支持),它作为"main"的替代品提供,可能正是您(以及任何其他有同样问题的人)的意思寻找。

虽然我自己还没有测试过,但"exports"支持“subpath exports” ,它允许您从与主路径不同的路径导出子模块代码:

{
  "main": "./index.js",
  "exports": {
    ".": "./index.js",
    "./subFunctions": "./src/subFunctions/index.js"
  }
}

在导入端,这将导致您正在寻找的内容:

import myPackage from "my-package";
import subFunctions from "my-package/subFunctions";

或者大概(这是文档不清楚的部分,所以我不是 100% 确定,但这是有道理的):

import myPackage from "my-package";
import { subFunction1, subFunction2 } from "my-package/subFunctions";

...假设src/subFunctions/index.js具有匹配的命名导出。

抱歉,如果其中任何一个具有误导性,因为我只是从文档中得到这个(几天后我偶然发现了这个问题,就像随机偶然发现这个问题一样),但如果它有效,希望这对某人有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM