我最近向 NPM 发布了一个私有(private)模块,其中包含一些我们在一些服务中使用的通用代码。
代码是用 ES6 编写的,因此我们需要在发布到 NPM 之前使用 babel 对其进行转换。我有一个预发布脚本,可以将 src
转换为 lib
。
此模块中没有 index.js
文件,因为它只是一些通用代码。
我遇到的问题是,当我从 NPM 安装模块时,使用 require('@ourorg/ourmodule/somecode')
不起作用(找不到模块) .我不得不使用 require('@ourorg/ourmodule/lib/somecode')
。
我已经尝试将 package.json
中的 main
字段更改为 lib
的许多变体,但它似乎不起作用除非我包含一个 index.js
文件,在这种情况下 require('@ourorg/ourmodule')
返回那里导出的任何内容。我看到的一种解决方法是将所有通用代码导出到 index.js
文件中,但这根本无法维护。
最佳答案
package.json
中的 main
字段遵循与普通 Node 导入相同的规则 - 它应该指向一个特定的文件,或者它可以指向一个包含 index.js
的目录。
据我所知,没有办法让导入你的包只是一个目录的别名。如果有,require("@ourorg/ourmodule")
会返回什么?
如果每次导入时都必须键入 lib
绝对让您发疯,也许您可以在构建过程中添加一个步骤,自动生成一个 index.js
重新导出根目录中的所有内容?
关于javascript - 在没有 index.js 的情况下更改 NPM 入口点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41505820/