Generator package.json

package.json
Berikutnya

Alih-alih menjalankan npm init dan menjawab sebelas pertanyaan, isi formulir saja untuk mendapatkan file package.json yang rapi dan terstruktur dengan baik. Generator ini mencakup semua bidang wajib (nama, versi), bidang yang umum digunakan (script, ketergantungan, devDependencies, engine), serta informasi tambahan penting (repository, bug, kata kunci, lisensi) yang diperlukan agar sebuah paket dapat ditemukan dan dipublikasikan.

Cara Membuat File package.json Anda

  1. 1

    Masukkan nama dan versi

    Nama harus mengikuti aturan npm: huruf kecil, aman untuk digunakan dalam URL, dan tidak melebihi 214 karakter. Versi menggunakan format semver (misalnya 0.1.0).

  2. 2

    Pilih jenis modul

    CommonJS (bawaan) atau ESM melalui tipe: "module". Berlaku untuk proyek Node.js versi 14 ke atas.

  3. 3

    Tambahkan skrip

    Mulai, bangun, uji, lint, semua perintah dijalankan menggunakan `npm run <name>`.

  4. 4

    Daftar Ketergantungan

    Paket runtime terdapat dalam ketergantungan (dependencies), sedangkan alat bantu pengembangan tersedia dalam devDependencies.

  5. 5

    Atur metadata

    Deskripsi, penulis, lisensi, URL repositori, kata kunci.

  6. 6

    Salin hasil keluaran

    Tempelkan ke dalam file package.json baru di lokasi akar proyek.

Bidang-bidang yang paling penting

Bidang Wajib? Catatan
name Ya Huruf kecil, panjang 1–214 karakter, aman untuk URL
version Ya Semver (major.minor.patch)
type Tidak “module” untuk ESM; dihilangkan untuk CommonJS
main Direkomendasikan Titik masuk untuk CommonJS (index.js)
exports Direkomendasikan Peta ekspor modern untuk sistem CJS/ESM ganda
scripts Sangat direkomendasikan Perintah npm run <name>
dependencies Sesuai kebutuhan Paket runtime
devDependencies Sesuai kebutuhan Alat pembangunan, peluncur pengujian, alat pemeriksa kode (linters)
engines Sangat diinginkan Rentang versi node yang wajib
license Ya untuk publikasi Identifikasi SPDX seperti MIT, Apache-2.0

Daftar Panduan Cepat Semver

  • 1.0.0, major.minor.patch
  • ^1.0.0, kompatibel dengan versi 1.x.x (>=1.0.0, <2.0.0)
  • ~1.0.0, hanya pembaruan patch (>=1.0.0, <1.1.0)
  • >=1.0.0 <2.0.0, rentang eksplisit
  • 1.0.0-beta.1, prerelease
  • latest, tag npm, bukan versi

Nilai default saat menjalankan npm install package adalah ^, yang memungkinkan peningkatan tanpa terputus.

Skrip standar yang sangat berguna

{
  "scripts": {
    "start": "node index.js",
    "dev": "nodemon index.js",
    "build": "tsc",
    "test": "vitest",
    "lint": "eslint .",
    "format": "prettier --write ."
  }
}

Kesalahan dalam penamaan

  • Tanpa huruf kapital. MyPackage gagal saat npm install.
  • Tanpa spasi. Gunakan tanda hubung: my-package.
  • Nama ber-scope dimulai dengan @org/ untuk organisasi GitHub atau npm: @acme/utils.
  • Kata-kata yang dicadangkan. node_modules, favicon.ico, core, dan express tidak dapat digunakan sebagai nama paket.

Opsi lisensi

Pilih pengenal SPDX yang diakui:

  • MIT, pilihan umum yang paling fleksibel dan terbuka.
  • Apache-2.0, bersifat permissive dengan pemberian paten.
  • ISC, lisensi sangat singkat mirip MIT, yang menjadi standar bawaan di npm.
  • GPL-3.0 atau versi lebih baru – jenis lisensi yang bersifat “copyleft”.
  • UNLICENSED, paket pribadi, tidak ditujukan untuk distribusi.

String lisensi yang salah atau ambigu akan memicu peringatan saat proses publikasi di npm.

Pertanyaan yang Sering Diajukan

Ketergantungan (dependencies) diinstal ketika seseorang menjalankan npm install dalam proyek yang menggunakan paket Anda. Ketergantungan pengembangan (devDependencies) hanya diinstal dalam lingkungan pengembangan khusus paket tersebut. Paket runtime dimasukkan ke dalam kategori dependencies, sedangkan alat-alat pengujian dan pembangunan dimasukkan ke dalam kategori devDependencies.

Ya, terutama untuk aplikasi. Lockfile menentukan versi yang pasti dan memastikan proses instalasi dapat diulang secara konsisten di berbagai mesin maupun dalam skenario CI. Untuk paket pustaka yang diterbitkan di npm, penggunaan lockfile bersifat opsional; setiap pengguna akan mendapatkan lockfile sendiri.

Hanya jika Anda menginginkan paket menggunakan format ESM (sintaks impor/ekspor) secara default; jika tidak, file .js akan diperlakukan sebagai CommonJS. Anda juga dapat menggunakan ekstensi .mjs untuk file ESM atau .cjs untuk file CommonJS, terlepas dari jenisnya.

Versi Node yang digunakan untuk menguji kode Anda. Pilihan umum saat ini adalah "engines": {"node": ">=18"}. Ini merupakan peringatan, bukan kesalahan; namun alat pengujian tetap memperhatikannya dan pengguna dapat menempelkannya dengan benar.

Alat Terkait

Alat ini tersedia dalam bahasa lain