我正在尝试在 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
添加回答
举报
0/150
提交
取消