Cara Publish NPM Package
Panduan ini menjelaskan cara publish package JavaScript/TypeScript kamu ke npm registry, dari nol sampai bisa di-install orang lain lewat npm install.
1. Buat Akun NPM
Kalau belum punya akun, daftar dulu di npmjs.com/signup.
Setelah itu, login lewat terminal:
npm login
Cek apakah sudah login:
npm whoami
2. Siapkan Struktur Project
Struktur minimal package:
my-package/
├── src/
│ └── index.js
├── package.json
├── README.md
└── .npmignore
3. Setup package.json
Kalau belum ada, generate dulu:
npm init
Contoh package.json yang lengkap:
{
"name": "nama-package-kamu",
"version": "1.0.0",
"description": "Deskripsi singkat package kamu",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"scripts": {
"build": "tsc",
"prepublishOnly": "npm run build"
},
"keywords": ["utility", "helper"],
"author": "Nama Kamu",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/username/nama-package.git"
}
}
:::tip Penting soal nama package Nama package harus unik di seluruh npm registry. Cek dulu ketersediaannya:
npm view nama-package-kamu
Kalau muncul error 404 Not Found, berarti nama itu masih tersedia.
:::
4. Kalau Pakai TypeScript
Tambahkan tsconfig.json:
{
"compilerOptions": {
"outDir": "dist",
"declaration": true,
"module": "commonjs",
"target": "ES2020",
"strict": true
},
"include": ["src"]
}
Build sebelum publish:
npm run build
5. Tentukan File yang Ikut Ter-publish
Gunakan field files di package.json, atau buat .npmignore:
src/
tsconfig.json
*.test.js
.github/
Cek dulu file apa saja yang bakal ikut ke-publish (tanpa benar-benar publish):
npm pack --dry-run
6. Publish!
Untuk package publik biasa:
npm publish
Untuk scoped package (misal @username/nama-package), harus publish sebagai public secara eksplisit:
npm publish --access public
7. Update Versi Berikutnya
Setiap kali mau publish ulang, versi harus naik — npm nolak publish kalau versi sama persis. Gunakan npm version biar otomatis update package.json + bikin git tag:
npm version patch # 1.0.0 -> 1.0.1 (bug fix)
npm version minor # 1.0.0 -> 1.1.0 (fitur baru, backward compatible)
npm version major # 1.0.0 -> 2.0.0 (breaking changes)
npm publish
8. Cek Hasilnya
npm view nama-package-kamu
Atau langsung buka:
https://www.npmjs.com/package/nama-package-kamu
Troubleshooting Umum
| Masalah | Penyebab |
|---|---|
403 Forbidden | Nama package sudah dipakai orang lain |
You must sign up for private packages | Lupa tambah --access public untuk scoped package |
| Package ter-publish tapi file kosong | Field files di package.json salah, atau .npmignore kelewat agresif |
| Versi ditolak | Lupa naikin versi sebelum npm publish ulang |
Sekali publish, versi yang sama tidak bisa di-overwrite. Kalau ada kesalahan, publish versi baru — jangan andalkan npm unpublish karena ada pembatasan ketat dari npm (hanya bisa dalam 72 jam & dengan syarat tertentu).