【发布时间】:2018-02-17 11:07:57
【问题描述】:
我是第一次构建一个 npm 包(ES6 + Babel),我无法将它们全部连接在一起,以便最终用户可以导入它。
我的构建(输出)文件夹结构和src一样:
build
- index.js
- BaseClass.js
sublclasses
- SubClassA.js
- SubClassB.js
SubClassA 和 SubClassB 导入和扩展 BaseClass 并且都使用 module.exports 导出。入口点index.js只有两行:
import SubClassA from './subclasses/SubClassA'
import SubClassB from './subclasses/SubClassB'
package.json 将 main 字段设置为 ./build/index.js。
在将项目(或 npm 链接)安装到测试项目中时,我写道:
import SubClassA, SubClassB from 'my-package'
导入有效,但导入的类未定义。我尝试了其他几种方法,但都没有成功。
我应该如何正确地做呢?
编辑:将index.js 更改为:
import SubClassA from './subclasses/SubClassA'
import SubClassB from './subclasses/SubClassB'
module.exports = SubClassA
module.exports = SubClassB
它有点工作。 “种类”意味着如果我像这样在测试项目中导入两个类:
import SubClassA, SubClassB from 'my-package'
然后做:
let sca = new SubClassA()
原来是SubClassB。如果我从导入中省略SubClassB,它可以正常工作。
编辑 2 - 解决方案:
根据下面 cmets 中的说明,我已将 index.js 文件更改为:
export { default as SubClassA } from './subclasses/SubClassA'
export { default as SubClassB } from './subclasses/SubClassB'
我将它导入到测试项目中,如下所示:
import { SubClassA, SubClassB } from 'my-project' and it worked.
【问题讨论】:
-
您是从主文件中导出 SubClassA 和 B 吗?
-
@maioman 你是对的,像我一样只将它们导入主文件是不够的。将它们导出,重建并工作,但这次有了新的转折。我会在一分钟内更新我的答案。
-
你应该将它与
import {SubClassA, SubClassB} from 'my-package'一起使用 -
是的,工作!谢谢
标签: javascript npm ecmascript-6 package.json