猿问

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

我正在尝试在 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"

但这不是我想要的……


发布包的标准方法是什么,以便可以像这样导入“子模块”,或者有人可以指出我做这种事情的回购吗?


墨色风雨
浏览 104回答 1
1回答

潇潇雨雨

如果我理解,应该有两个选项可供您选择。首先,让我尝试解释一下 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 exportmodule.exports = require('./dist/a')或者稍微改变一下项目的结构,使文件a和b位于它们的特定目录中。例如:- package.json- src/  - a.js  - b.js- a/  - index.js- b/  - index.js
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答