我第一次建立了一个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 - 解决方案:
根据以下评论中的说明,我已经更改了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.
答案 0 :(得分:1)
问题是您没有从主文件中导出任何内容,
使用es6导入/导出语法,您可以直接导出它:
export {default as SubclassA} from './subclasses/SubClassA'
export {default as SubclassB} from './subclasses/SubClassB'
然后你可以使用命名导入:
{SubClassA, SubClassB} from 'my-package'