获取没有入口点的 NPM 包路径

Get a path to NPM package without entry point

一个非常规包包含二进制和嵌套模块但没有入口点(没有索引脚本也没有 main),react-scripts 是一个例子。

require.resolve('react-scripts/bin/react-scripts') 有效,因为 bin/react-scripts.js 模块存在,但 require.resolve('react-scripts') 导致错误,因为包没有入口点。

最好避免依赖像 ./node_modules/react-scripts 这样的预期位置,因为它取决于项目结构。

获取 react-scripts 模块文件夹的完整路径的好方法是什么?

可以从最近的预期存在的文件中提取包路径,即package.json:

path.dirname(require.resolve('react-scripts/package.json'))

仍然希望使用其他方法来解析包的路径。