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

标签 javascript node.js npm

我最近向 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/

相关文章:

docker - 如何将 Docker 入口点设置为 NPM?

Javascript:在globalStorage中存储对象

node.js - 如何从 Google Cloud Functions NodeJS 连接到 Google Cloud Storage

javascript - 如何在 Jquery UI 对话框中验证表单?

javascript - 使用 node 和 multer 将图像上传到 heroku 不起作用

javascript - 如何处理同一个csv文件的同时修改?

node.js - "npm start"显示 "Unhandled promise rejection"错误

javascript - 解决延迟不按预期工作

php - JSON 返回数组的奇怪结果

javascript - 是否可以在 react 中强制一个组件在另一个组件内使用?