node.js - Windows上的全局npm安装位置?

标签 node.js windows npm pycharm

我不是 100% 确定,但我相信我在我的家庭和办公室 PC 上都从 Windows 安装程序安装了 node v5。

在我的家用 PC 上,全局安装发生在 %APPDATA% 下:

(dev) go|c:\srv> which lessc
c:\users\bjorn\appdata\roaming\npm\lessc
c:\users\bjorn\appdata\roaming\npm\lessc.cmd

在我的办公室 PC 上,它们位于程序文件下:

(dev) go|w:\srv> which lessc
c:\program files\nodejs\lessc
c:\program files\nodejs\lessc.cmd

我需要向 PyCharm 的文件观察器提供这些全局工具的完整路径,并且由于我共享的项目文件在用户文件夹下没有全局资源是有意义的。

为什么全局安装最终会放在不同的文件夹中,我该如何强制它们到所有团队成员共用的位置?

最佳答案

根据:https://docs.npmjs.com/files/folders

  • Local install (default): puts stuff in ./node_modules of the current package root.
  • Global install (with -g): puts stuff in /usr/local or wherever node is installed.
  • Install it locally if you're going to require() it.
  • Install it globally if you're going to run it on the command line. -> If you need both, then install it in both places, or use npm link.

prefix Configuration

The prefix config defaults to the location where node is installed. On most systems, this is /usr/local. On windows, this is the exact location of the node.exe binary.

文档可能有点过时,但它们解释了为什么全局安装最终会出现在不同的目录中:

(dev) go|c:\srv> npm config ls -l | grep prefix
; prefix = "C:\\Program Files\\nodejs" (overridden)
prefix = "C:\\Users\\bjorn\\AppData\\Roaming\\npm"

根据其他答案,覆盖现在似乎是 Windows 上的默认位置,并且我可能在实现此覆盖之前已经安装了我的 office 版本。

这也提出了一种解决方案,让所有团队成员将全局变量存储在相对于他们的 PC 相同的绝对路径中,即(以管理员身份运行):
(在 cmd 中运行,而不是在 PowerShell 中!)

mkdir %PROGRAMDATA%\npm
setx PATH "%PROGRAMDATA%\npm;%PATH%" /M
npm config set prefix %PROGRAMDATA%\npm

打开一个新的 cmd.exe 窗口并重新安装所有全局包。

解释(按行号):

  1. 在合理的位置创建一个文件夹来保存全局变量(Microsoft 是 坚持认为您不应该写入 ProgramFiles,因此 %PROGRAMDATA% 似乎 就像下一个合乎逻辑的地方。
  2. 目录需要在路径上,所以使用setx ../M来设置 系统路径(在 HKEY_LOCAL_MACHINE 下)。这就是需要你运行的东西 这在具有管理员权限的 shell 中。
  3. 告诉 npm 使用这个新路径。 (注意:文件夹在 %PATH% 中不可见 这个shell,所以你必须打开一个新窗口)。

关于node.js - Windows上的全局npm安装位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33819757/

相关文章:

javascript - 同步使用 ImageMagic

javascript - 通过 Mix 将 node_modules 导入 Laravel

node.js - Nodejs + npm,在 ntfs 分区上安装模块

node.js - Sequelize - 一对多 - 一对多

c++ - win32程序如何在单个窗口中添加多个工具栏?

java - 如何在 64 位 JVM 上运行 TeamCity

xml - 如何在 .propdesc 文件中使用 relatedProperty

node.js - 如何在 Bluemix 中阻止特定 IP 地址?

node.js - 如何删除MongoDB集合中的TTL?

node.js - 在集合 "library"中找不到原理图 "@schematics/angular"