mirror of
https://github.com/emrusz/emrusz.git
synced 2025-04-08 02:00:35 -04:00
47 lines
1.2 KiB
Markdown
47 lines
1.2 KiB
Markdown
---
|
||
title: "NPM Global Without Sudo"
|
||
categories:
|
||
- programming
|
||
tags:
|
||
- nodejs
|
||
- npm
|
||
- linux
|
||
- security
|
||
---
|
||
|
||
## Don't Use `sudo` With `npm`
|
||
|
||
I have seen quite a few programmers install global packages on their machine with `sudo npm`. Generally, that isn't a great idea. I was inspired by Andrew Crites's article "[Don’t Use `sudo` with `npm` …still](https://www.grammarly.com/blog/punctuation-capitalization/italics/)" to post this quick guide on configuring npm prefixes.
|
||
|
||
Why shouldn't you use `sudo` with `npm`? Go read Crites's article!
|
||
|
||
### Creating a `npm` Prefix
|
||
|
||
Set a prefix in your npm configuration using the `npm config` command.
|
||
|
||
```bash
|
||
npm config set prefix '~/.local/'
|
||
```
|
||
|
||
This modifies your `~/.npmrc` to include the following line.
|
||
|
||
```bash
|
||
prefix=~/.local/
|
||
```
|
||
|
||
### Updating `$PATH`
|
||
|
||
If you intend to run globally installed packages from the command line you must add the new prefix location to your `$PATH`. Replace `~/.zshrc` with the appropriate configuration file for your shell e.g. `~/.bashrc`.
|
||
|
||
```bash
|
||
mkdir -p ~/.local/bin
|
||
echo 'export PATH="$HOME/.local/bin/:$PATH"' >> ~/.zshrc
|
||
```
|
||
|
||
### Installing Global Packages
|
||
|
||
You can now install global packages in the scope of your user _without_ `sudo`!
|
||
|
||
```bash
|
||
npm i -g packagename
|
||
```
|