Global npm install location on windows?
node.jsWindowsNpmPycharmnode.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.):
- 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.
- 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. - 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