Skip to main content

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

MasalahPenyebab
403 ForbiddenNama package sudah dipakai orang lain
You must sign up for private packagesLupa tambah --access public untuk scoped package
Package ter-publish tapi file kosongField files di package.json salah, atau .npmignore kelewat agresif
Versi ditolakLupa naikin versi sebelum npm publish ulang
note

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).