Global npm install location on windows?

node.jsWindowsNpmPycharm

node.js Problem Overview


I'm not 100% sure, but I believe I installed node v5 from the windows installer on both my home and office PCs.

On my home PC global installs happen under %APPDATA%:

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

while on my office PC, they go under program files:

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

I need to provide the full path to a number of these global tools to PyCharm's file watcher, and since the project file i shared it would make sense to not have global resources under a user folder.

Why would the global installs end up in different folders, and how can I force them to a location that is common to all team members?

node.js Solutions


Solution 1 - node.js

According to: 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.

The docs might be a little outdated, but they explain why global installs can end up in different directories:

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

Based on the other answers, it may seem like the override is now the default location on Windows, and that I may have installed my office version prior to this override being implemented.

This also suggests a solution for getting all team members to have globals stored in the same absolute path relative to their PC, i.e. (run as Administrator):
(Run this in cmd, not in PowerShell!)

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

open a new cmd.exe window and reinstall all global packages.

Explanation (by lineno.):

  1. Create a folder in a sensible location to hold the globals (Microsoft is adamant that you shouldn't write to ProgramFiles, so %PROGRAMDATA% seems like the next logical place.
  2. The directory needs to be on the path, so use setx .. /M to set the system path (under HKEY_LOCAL_MACHINE). This is what requires you to run this in a shell with administrator permissions.
  3. Tell npm to use this new path. (Note: folder isn't visible in %PATH% in this shell, so you must open a new window).

Solution 2 - node.js

These are typical npm paths if you install a package globally:

Windows XP -             %USERPROFILE%\Application Data\npm\node_modules
Newer Windows Versions - %AppData%\npm\node_modules
or -                     %AppData%\roaming\npm\node_modules

Solution 3 - node.js

Just press windows button and type %APPDATA% and type enter.

Above is the location where you can find \npm\node_modules folder. This is where global modules sit in your system.

Solution 4 - node.js

As of today, global packages installed like for eg. npm i -g @vue/cli are by default store in a directory:

C:\Users\<YourUserName>\AppData\Roaming\npm\node_modules

Solution 5 - node.js

If you're just trying to find out where npm is installing your global module (the title of this thread), look at the output when running npm install -g sample_module

> $ npm install -g sample_module C:\Users\user\AppData\Roaming\npm\sample_module -> > C:\Users\user\AppData\Roaming\npm\node_modules\sample_module\bin\sample_module.js > + [email protected] updated 1 package in 2.821s

Solution 6 - node.js

C:\Program Files\nodejs\node_modules\npm\node_modules

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionthebjornView Question on Stackoverflow
Solution 1 - node.jsthebjornView Answer on Stackoverflow
Solution 2 - node.jsDennis StückenView Answer on Stackoverflow
Solution 3 - node.jsSubhan LuckiestView Answer on Stackoverflow
Solution 4 - node.jsAbhishek BhartiView Answer on Stackoverflow
Solution 5 - node.jsjava-addict301View Answer on Stackoverflow
Solution 6 - node.jsVaibhav BajpayeeView Answer on Stackoverflow