为了账号安全,请及时绑定邮箱和手机立即绑定

如何分发带有子模块的 es6 包

如何分发带有子模块的 es6 包

墨色风雨 2022-05-26 11:28:18
我正在尝试在 npm 上发布一个包。我不确定如何表达我正在尝试做的事情..也许包装“子模块”?缩写的目录结构是:- package.json- src/  - a.js  - b.js- dist/  - a.js  - b.js我的构建脚本使用 Babel 转译到dist具有与src/. 我希望消费者从a.js模块中导入函数,如下所示:import {foo} from "mypackage/a";不是import {foo} from "mypackage/dist/a";如果我添加index.js到mypackage/并导出a我可以做import {a} from "mypackage"但这不是我想要的……发布包的标准方法是什么,以便可以像这样导入“子模块”,或者有人可以指出我做这种事情的回购吗?
查看完整描述

1 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

如果我理解,应该有两个选项可供您选择。


首先,让我尝试解释一下 Node 是如何处理带有斜线的 Node 子模块的。当您使用斜杠导入模块时,Node 将尝试在根文件夹中查找具有斜杠后指定名称的文件。在您的情况下,它将是a.js. 如果没有找到,Node 将尝试查找a包含该文件的目录index.js。如果未找到文件,则不导入任何内容。


回到您的问题,您可以a.js在根文件夹中创建包含以下导出的文件:


export * from './dist/a';

// The traditional export should look like this, in case I have wrong ES6 export

module.exports = require('./dist/a')

或者稍微改变一下项目的结构,使文件a和b位于它们的特定目录中。


例如:


- package.json

- src/

  - a.js

  - b.js

- a/

  - index.js

- b/

  - index.js


查看完整回答
反对 回复 2022-05-26
  • 1 回答
  • 0 关注
  • 103 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信