如何检测当前的npm包是否是全局的?

时间:2015-06-25 20:56:38

标签: node.js npm

我想编写一些代码,只有在全局安装软件包时才会在npm postinstall上执行。是否有内置的解决方案来检测活动包是否全局安装?

如果没有那么什么是适用于任何操作系统的最佳解决方法?我目前唯一的想法是检查包的当前工作目录,并检查它是否在全局npm路径下。

2 个答案:

答案 0 :(得分:4)

我在repo找到了我正在寻找的解决方案。

解决方案是在postinstall脚本中检查!!process.env.npm_config_global。只有在全局安装软件包时,该环境变量才会生效。

答案 1 :(得分:0)

您可以使用require.resolve()为您提供路径。您可以比较给定的路径,看看它是在本地安装还是全局安装。您可以使用npm root -g来获取全局模块的路径。

https://nodejs.org/api/globals.html#globals_require_resolve