Where does npm install packages?
Local Install: npm automatically places packages into the ./node_modules directory of your active project.
One might say it's a package's local habitat:
./node_modules/your-package/
Global Install: For global installations, npm install -g your-package is your go-to command. To find the path, npm root -g is at your service.
Like a universal dictionary:
- Unix systems, it's typically at
/usr/local/lib/node_modules - Windows systems, you'd usually find it in
C:\Users\YOURUSERNAME\AppData\Roaming\npm\node_modules
npm list and npm list -g list locally and globally installed packages respectively.
Locating bins
Curious about where npm keeps the executable files for your packages? Say no more:
- Local bin:
npm binunveils the directory for locally installed package executables. - Global bin: Simply add
-gas innpm bin -gfor globetrotting executables.
Permissions and Unix
Encountered permission issues on Unix systems? Buckle up:
- Ditch sudo: use a node version manager like
nvmornto bypass the need forsudowith global installations. - Global permissions: If need be, shift ownership of your global
node_modulesdirectory. Doesn't hurt to have some control, does it?
Customizing npm
Make npm work for you with these simple adjustments:
- Change global path: Set a new global installation path using
npm config set prefix /new/path. - Current global path: Verify the existing installation directory with
npm config get prefix. Knowledge is power!
Exploring node_modules
Navigating the node_modules structure:
- Dependency tree: Each package holds its own
node_modulesfolder with dependencies. Kind of like a family tree! - Flattened node_modules: From npm v3, the dependency tree is as flat as a pancake, reducing depth.
- Avoiding duplicates: Flattening prevents version duplication by trying to keep a single version of a package.
Resolving conflicts
Two packages, two conflicting versions of the same dependency, one headache? npm has your back:
- Nested dependencies: npm nests conflicting versions to ensure each package gets its right mate.
- Semver resolution: npm uses semantic versioning to determine the acceptable version range for each dependency.
Performance boost with symlinks
Empower your disk efficiency with npm's built-in linking features:
- npm link: Symlink a package folder to mimic global installation and ease development. It's like teleportation in the npm world!
- Local linking: Link local packages together to test changes in real time - because who likes to wait?
Was this article helpful?