nodejs中如何获取全局模块的路径?

作者站长头像
站长
· 阅读数 5

请问在nodejs中如何获取全局安装包的绝对路径(兼容linux/windows)。比方说通过 npm i foo -g 安装了一个全局包,我想在js文件中获取这个全局包的绝对路径而非引入这个包,请问该怎么做?

回复
1个回答
avatar
test
2024-07-05

比如,我有一个全局安装的apidoc的包

首先,我需要在我的当前项目的目录下npm link apidoc这样可以保证当前项目可以require到这个包

然后,大多的包根目录下都会有package.json这个文件,所以在代码中可以使用

const path = require('path');

let packagePath = path.dirname(require.resolve("apidoc/package.json"));
console.log(packagePath) //C:\Users\Administrator\AppData\Roaming\npm\node_modules\apidoc

可以输出这个包的的所在目录,兼容绝大数npm上的包

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容