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

时间:2017-01-06 12:32:04

标签: javascript node.js npm

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

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

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

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

我已尝试将main中的package.json字段更改为lib的多种变体,但除非我包含index.js文件,否则它似乎无效在这种情况下require('@ourorg/ourmodule')返回在那里导出的任何内容。我可以看到的一个解决方法是导出index.js文件中的所有公共代码,但这根本不可维护。

1 个答案:

答案 0 :(得分:3)

package.json中的index.js字段遵循与普通节点导入相同的规则 - 特别是它应指向单个文件,或者它可以指向具有{{1}的目录在它里面。

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

如果你每次导入某些内容时都必须输入lib,这绝对让你疯狂,也许你可以在你的构建过程中添加一个步骤来自动生成一个index.js,它会在根目录下重新导出所有内容?