Package Manager
Package manager adalah tool untuk menginstal, mengupdate, dan mengelola software dan library. Sebagai developer, kamu akan menggunakan beberapa package manager sekaligus.
Package Manager untuk JavaScript/Node.js
npm (Node Package Manager)
# Inisialisasi project baru
npm init -y
# Install package
npm install react
npm install -D vitest # devDependency
# Install semua dependency dari package.json
npm install
npm ci # clean install (lebih cepat, untuk CI/CD)
# Update package
npm update react
npm update # update semua
# Hapus package
npm uninstall react
# Jalankan script dari package.json
npm run dev
npm run build
npm test
# Lihat package yang outdated
npm outdated
# Audit keamanan
npm audit
npm audit fix
pnpm (Performant npm)
# Install pnpm
npm install -g pnpm
# Penggunaan mirip npm
pnpm install
pnpm add react
pnpm remove react
pnpm run dev
# Keunggulan: disk space hemat (hard link)
# dan install lebih cepat
yarn
yarn install
yarn add react
yarn remove react
yarn dev
Package Manager untuk Sistem Operasi
macOS — Homebrew
# Install Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install program
brew install node
brew install git
brew install ripgrep
# Update semua
brew update && brew upgrade
# Cari package
brew search python
# Info package
brew info node
# Hapus
brew uninstall ripgrep
# Bersihkan cache
brew cleanup
Ubuntu/Debian — apt
# Update daftar package
sudo apt update
# Install
sudo apt install nodejs
sudo apt install nginx
# Upgrade semua
sudo apt upgrade
# Hapus
sudo apt remove nginx
# Cari
apt search mysql
# Info
apt show nodejs
Package Manager untuk PHP — Composer
# Install dependency dari composer.json
composer install
# Tambah package baru
composer require laravel/framework
# Tambah dev dependency
composer require --dev phpunit/phpunit
# Update
composer update
# Autoload
composer dump-autoload
Package Manager untuk Python — pip
# Install package
pip install requests
pip install -r requirements.txt
# Daftar package terinstal
pip list
pip freeze > requirements.txt
# Upgrade
pip install --upgrade requests
Versi & Semver
Package biasanya menggunakan Semantic Versioning (semver):
MAJOR.MINOR.PATCH
2 . 1 . 3
| Part | Kapan berubah |
|---|---|
| MAJOR | Breaking change |
| MINOR | Fitur baru (backward compatible) |
| PATCH | Bug fix |
Di package.json:
{
"dependencies": {
"react": "^18.2.0",
"lodash": "~4.17.0",
"exact-pkg": "1.0.0"
}
}
^18.2.0— izinkan update MINOR dan PATCH (18.x.x)~4.17.0— izinkan update PATCH saja (4.17.x)1.0.0— exact version
Lock Files
Lock file memastikan semua developer dan CI menggunakan versi yang sama persis:
| Package Manager | Lock File |
|---|---|
| npm | package-lock.json |
| pnpm | pnpm-lock.yaml |
| yarn | yarn.lock |
| Composer | composer.lock |
Selalu commit lock file ke Git!