在没有index.js的情况下更改NPM入口点

我最近向NPM发布了一个私有模块,在我们的一些服务中使用了一些通用的代码。

代码是用ES6编写的,因此我们需要在发布到NPM之前使用babel进行编译。 我有一个预发布脚本,将srclib

这个模块中没有index.js文件,因为它只是一些常用的代码。

我遇到的问题是,当我从NPM安装模块时,使用require('@ourorg/ourmodule/somecode')不起作用(无法find模块)。 我不得不使用require('@ourorg/ourmodule/lib/somecode')

我已经尝试将package.jsonmain字段更改为lib许多变体,但除非包含index.js文件,否则似乎不起作用,在这种情况下require('@ourorg/ourmodule')返回任何出口到那里。 我可以看到一个解决方法是导出所有的通用代码在一个index.js文件,但这是不可维护的。

package.jsonmain字段遵循与正常节点导入相同的规则 – 既可以指向单个文件,也可以指向具有index.js的目录。

据我所知,没有办法导入你的软件包只是一个目录的别名。 如果有,什么require("@ourorg/ourmodule")返回?

如果每次导入内容时都必须键入lib ,那么你可能可以在构build过程中添加一个步骤来自动生成一个index.js ,该文件将根文件中的所有内容重新导出。