[英]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.