Node.js

Installation

Ubuntu/Debian (NodeSource Repository)

# Install Node.js 16
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install nodejs -y
 
# Or install Node.js 18
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install nodejs -y
 
# Or install Node.js 20
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install nodejs -y
 
# Verify installation
node --version
npm --version

CentOS/RHEL

# Install Node.js from repository
curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
sudo yum install nodejs -y
 
# Or install from package
sudo yum install nodejs npm -y
 
# Verify installation
node --version
npm --version
# Install NVM first (see NVM documentation)
nvm install 18
nvm use 18
 
# Verify
node --version
npm --version

From Source

# Download latest LTS
cd /tmp
wget https://nodejs.org/dist/v18.16.0/node-v18.16.0-linux-x64.tar.xz
tar -xf node-v18.16.0-linux-x64.tar.xz
 
# Install
sudo mv node-v18.16.0-linux-x64 /usr/local/node
sudo ln -s /usr/local/node/bin/node /usr/local/bin/node
sudo ln -s /usr/local/node/bin/npm /usr/local/bin/npm
 
# Verify
node --version
npm --version

NPM Configuration

Global Package Path

# Check global npm path
npm root -g
 
# Change global package directory
mkdir -p ~/.npm-global
npm config set prefix '~/.npm-global'
 
# Add to PATH
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

Fix Permissions

# Fix npm permissions issue
sudo chown -R $USER ~/.npm
 
# Or for specific path
sudo chown -R $USER:$USER /path/to/directory
 
# Fix global npm folder
sudo chown -R $USER /usr/local/lib/node_modules

npm Package Management

Basic Commands

# Initialize project
npm init -y
 
# Install dependencies
npm install
npm i
 
# Install specific package
npm install package-name
 
# Install global package
npm install -g package-name
 
# Install from package-lock.json
npm ci
 
# Update packages
npm update
npm update -g
 
# Remove package
npm uninstall package-name
npm remove package-name
 
# List installed packages
npm list
npm ls
 
# List global packages
npm list -g

Version Management

# Check npm version
npm --version
 
# Update npm
npm install -g npm@latest
 
# Update Node.js
nvm install node
# Or update system Node.js via package manager
 
# Check for outdated packages
npm outdated
 
# Update all packages
npm update --save

Project Setup

Create New Project

# Initialize new project
mkdir my-app
cd my-app
npm init -y
 
# Install common dependencies
npm install express dotenv cors
 
# Install dev dependencies
npm install --save-dev nodemon eslint
 
# Create entry point
echo "console.log('Hello World');" > index.js
 
# Add npm scripts to package.json
# Edit package.json and add:
"scripts": {
  "start": "node index.js",
  "dev": "nodemon index.js"
}
 
# Run application
npm start
# Or in development
npm run dev

Package.json Scripts

{
  "scripts": {
    "start": "node server.js",
    "dev": "nodemon server.js",
    "build": "webpack --mode production",
    "test": "jest",
    "lint": "eslint .",
    "format": "prettier --write ."
  }
}

Global Packages

# Install useful global packages
npm install -g nodemon      # Auto-reload on file changes
npm install -g pm2          # Process manager
npm install -g concurrently # Run multiple processes
npm install -g http-server  # Simple HTTP server
npm install -g webpack-cli  # Webpack bundler
 
# List all global packages
npm list -g --depth=0
 
# Uninstall global package
npm uninstall -g package-name

npm Registry

# Check current registry
npm config get registry
 
# Change registry
npm config set registry https://registry.npmjs.org/
 
# Use Taobao mirror (for faster China access)
npm config set registry https://registry.npm.taobao.org
 
# Reset to default
npm config set registry https://registry.npmjs.org/
 
# View npm config
npm config list

Troubleshooting

# Clear npm cache
npm cache clean --force
 
# Verify npm installation
npm doctor
 
# Fix npm permissions
sudo npm install -g npm
 
# Reinstall node_modules
rm -rf node_modules
rm package-lock.json
npm install
 
# Check npm logs
npm logs
 
# Debug mode
npm install --verbose
 
# Fix EACCES permission errors
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc

Environment Variables

# Create .env file
NODE_ENV=development
PORT=3000
DB_HOST=localhost
DB_USER=root
DB_PASS=password
 
# Install dotenv
npm install dotenv
 
# Load in application
require('dotenv').config();
console.log(process.env.PORT);