我正在尝试在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"
但这不是我想要的...
发布包的标准方法是什么,这样可以像这样导入“子模块”,或者有人可以将我指向执行此类操作的存储库?
答案 0 :(得分: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 export
module.exports = require('./dist/a')
或稍微更改项目的结构,因此文件a
和b
位于它们的特定目录中。
例如:
- package.json
- src/
- a.js
- b.js
- a/
- index.js
- b/
- index.js