在没有index.js的情况下更改NPM入口点
我最近向NPM发布了一个私有模块,在我们的一些服务中使用了一些通用的代码。
代码是用ES6编写的,因此我们需要在发布到NPM之前使用babel进行编译。 我有一个预发布脚本,将src
为lib
。
这个模块中没有index.js
文件,因为它只是一些常用的代码。
我遇到的问题是,当我从NPM安装模块时,使用require('@ourorg/ourmodule/somecode')
不起作用(无法find模块)。 我不得不使用require('@ourorg/ourmodule/lib/somecode')
。
我已经尝试将package.json
的main
字段更改为lib
许多变体,但除非包含index.js
文件,否则似乎不起作用,在这种情况下require('@ourorg/ourmodule')
返回任何出口到那里。 我可以看到一个解决方法是导出所有的通用代码在一个index.js
文件,但这是不可维护的。
package.json
的main
字段遵循与正常节点导入相同的规则 – 既可以指向单个文件,也可以指向具有index.js
的目录。
据我所知,没有办法导入你的软件包只是一个目录的别名。 如果有,什么require("@ourorg/ourmodule")
返回?
如果每次导入内容时都必须键入lib
,那么你可能可以在构build过程中添加一个步骤来自动生成一个index.js
,该文件将根文件中的所有内容重新导出。