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

我想编写一些将在npm postinstall上执行的代码,只要这个包是全局安装的。 是否有一个内置的解决scheme来检测活动包是否安装在全局?

如果不是那么什么是最好的解决方法,将在任何操作系统上工作? 我目前唯一的想法是检查包的当前工作目录,并检查它是否在全局npmpath下。

我在这个回购中find了我正在寻找的解决scheme。

解决方法是在postinstall脚本中检查!!process.env.npm_config_global 。 只有在全局安装软件包的情况下,该环境variables才为真。

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

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