NodeJS: Dependency Management

Node JavaScript

14 May 20234 min
NPM

Ketika belajar NodeJS mungkin kita akan menemukan file package.json. Terdapat informasi mengenai Project Node kita dalam file tersebut. Ayo kita pelajari.

Apa itu Package JSON

Setiap Node Project pasti terdapat file yang ditulis dengan JSON(JavaScript Object Notation) untuk menyimpan informasi Node Package. package.json menyimpan basic information seperti name, version, hingga metadata. NPM membutuhkan package.json untuk mengelola package.

Manifest

Manifest berisi informasi mengenai mengenai yang ditulis kedalam Object, diantaranya yang sering digunakan:

  • name: Nama package.
  • version: Nomor versi mengarah pada semver.
  • description: Informasi singkat mengenai package.
  • lisence: Lisensi package dengan format SPDX (Software Package Data Exchange).
  • main: entry point dari program kita.
  • script: Menjalankan custom script kita dengan NPM.
  • dependencies: Berisi semua dependency yang dibutuhkan. Akan kita bahas nanti.

Untuk selengkapnya bisa kita kunjungi Docs.

Bagaimana membuat package.json

Kita perlu menginisiasi dengan npm, perintahnya $ npm init. Jika menjalankan tersebut biasanya kita akan mendapat pertanyaan.

$ npm init

This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

package name: (test)
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to /home/lucuria/Documents/dev/test/package.json:

{
  "name": "test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}


Is this OK? (yes)

Jika malas mengisi kita bisa menggunakan default value, hanya tekan enter saja setiap pertanyaan. Namun lebih mudahnya kita bisa menambahkan flag -y di perintah npm dan kita akan mendapatkan hasil yang sama.

$ npm init -y
wrote to package.json:
{
  "name": "test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

Mengelola Dependency

Setiap kali membuat program biasanya kita membutuhkan third-party library. Didalam Node JS, tersimpan pada NPM Registry.

Menginstall Package

Untuk menginstall package atau dependency cukup mudah, hanya dengan mengetikkan npm install. Selesai menjalankannya akan muncul folder node_module.

  • Install package:

    $ npm install react
    

    Secara default npm akan menginstall stable release yang terbaru di Registry. Sekarang jika dilihat file package.json, akan muncul dependency:

    "dependencies": {
      "react": "^18.2.0"
    },
    

    Jika ingin meng-install banyak package sekaligus hanya perlu menambahkan package lagi di belakangnya dan jika ingin spesifik versi yang kita mau langsung saja ditulis versinya.

    $ npm install react@18.0.1
    

Ada variasi lain yang bisa digunakan, yaitu dengan menuliskan langsung dependency yang diperlukan di package.json.

{
  "name": "personal-site",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint"
  },
  "dependencies": {
    "@next/font": "^13.2.4",
    "@tailwindcss/typography": "^0.5.8",
    "@types/node": "18.11.17",
    "@types/react": "18.0.26",
    "@types/react-dom": "18.0.9",
    "eslint-config-next": "^13.2.4",
    "gray-matter": "^4.0.3",
    "next": "^13.2.4",
    "next-mdx-remote": "^4.2.0",
    "next-themes": "^0.2.1",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "rehype-prism-plus": "^1.5.0",
    "remark-gfm": "^3.0.1",
    "remark-mdx-code-meta": "^2.0.0",
    "typescript": "4.9.4"
  }
}

kemudian tinggal menjalankan perintah install, lalu npm akan meng-install semua yang tertulis di dependencies.

$ npm install

Mengelola Versi

Versi didalam NodeJS terintegrasi dengan Semver. Kita bisa dengan spesifik menuliskan apa yang kita mau kedalam dependencies package.json. Jika bingung kita bisa gunakan kalkulator Semver NPM.

NPM Semver Calculator

Melihat Versi Dependency

Mungkin kita bekerja pada legacy project dan banyak sekali dependency yang harus di-update. Kita bisa dengan sederhana mengetikkan sebuah perintah yang secara otomatis menampilkan versi mengenai dependency.

$ npm outdated
NPM outdated

Untuk meng-update semua dependency sesuai Wanted version bisa dengan perintah:

$ npm update

Atau ingin hanya beberapa dependency:

$ npm update next

Sudah biasa bagi kita untuk berpindah-pindah versi dengan alasan tertentu. Melakukannya di NPM cukup mudah yaitu meng-install dengan versi yang diinginkan. Seperti contoh kita ingin downgrade package:

$ npm install next@^12.0.0

Jika sebelumnya di package.json kita terdapat next dengan latest version akan otomatis replace dengan versi yang kita inginkan

Terimakasih sudah membaca! ~ Ann