Catatan Belajar : Node JS NPM
00. Sebelum Belajar
- Menyelesaikan Kelas JavaScript Programmer Zaman Now
- NodeJS Dasar
01. Agenda
- Pengenalan Node Package Manager
- Membuat Project
- Project Configuration
- Project Type
- Script
- Dependency Management
- Dan lain-lain
- Saat kita membuat aplikasi, biasanya kita akan buat dalam bentuk project
- Sederhananya, project adalah directory/folder yang berisikan kode program dan dependency (library) yang kita butuhkan
- Melakukan management kode program dan dependency management secara manual bukanlah hal yang menyenangkan
- Untungnya, NodeJS menyediakan NPM (Node Package Manager) yang bisa kita gunakan untuk melakukan management project NodeJS
Kegunaan NPM
- NPM tidak hanya digunakan untuk melakukan management project NodeJS
- NPM juga bisa digunakan untuk melakukan dependency management yang kita butuhkan dalam project yang kita buat
- NPM bisa digunakan untuk download dependency, update dan upgrade dependency secara otomatis, tanpa harus kita lakukan secara manual dengan cara download dependency secara manual
- Saat kita melakukan management project menggunakan NPM
- NPM menyimpan semua konfigurasi project di file bernama package.json
- Semua konfigurasi project dan juga dependency kita simpan dalam file package.json yang terdapat di dalam directory project
- Kita bisa buat file package.json secara manual, atau menggunakan auto generate secara otomatis menggunakan NPM
- Saat kita melakukan management dependency menggunakan NPM
- NPM akan melakukan pencarian dan download dependency secara otomatis dari website https://www.npmjs.com/
- Kita juga bisa mencari dependency di website https://www.npmjs.com/
- Kita tidak perlu menginstall NPM secara manual
- Saat kita menginstall NodeJS, secara otomatis NPM akan terinstall juga
- Untuk mengecek versi NPM yang terinstall di komputer kita, kita bisa gunakan perintah :
npm --version
- Buat folder untuk project
- Masuk ke folder project melalui terminal/command line
- Buat project NPM baru dengan perintah : npm init
package.json
- Inti dari konfigurasi project NodeJS adalah package.json
- File package.json merupakan konfigurasi yang berupa format json untuk project NodeJS yang kita buat
Kode : package.json
04. Menjalankan Project
- Untuk menjalankan project, sebenarnya kita lakukan buat sama seperti ketika kita menjalankan script NodeJS
- Kita bisa gunakan perintah : node filescript
- Yang membedakan adalah, NodeJS sebelum menjalankan file nya, dia akan membaca konfigurasi dari package.json terlebih dahulu
Kode : Hello World
- Secara default, saat kita membuat project NodeJS, NodeJS menggunakan commonjs
- Oleh karena itu, ketika kita ingin menggunakan JavaScript Modules, kita harus mengubah file nya menjadi file mjs
- Namun, kita juga bisa mengubah default project type dari commonjs menjadi js modules, dengan cara mengubah type di package.json
- Sangat direkomendasikan sekarang menggunakan js modules dibanding commonjs, karena js modules sudah menjadi standard di JavaScript
Kode : Index
- NPM memiliki fitur yang bernama script, dimana kita bisa menyediakan perintah script yang nanti bisa digunakan untuk menjalankan perintah lainnya
- Penggunaan script ini biasanya digunakan untuk mempermudah ketika kita menjalankan perintah yang panjang
- Untuk menambahkan script, kita bisa tambahkan script nya di package.json
- Untuk menjalankan script, kita bisa gunakan NPM dengan perintah :
npm run-script namascript
Kode : Run Script
Special Script
- Script di package.json terdapat beberapa yang spesial atau khusus
- Script tersebut tidak perlu dijalankan menggunakan npm run-script namascript, tapi bisa langsung dijalankan menggunakan perintah npm namascript
- Contoh special script yaitu : start, stop, test, restart, uninstall, version, dan lain-lain
- Selain itu, terdapat script spesial untuk script diatas, kita bisa gunakan gunakan prefix pre sebagai script yang akan dijalankan sebelumnya, dan prefix post sebagai script yang dijalankan setelahnya
- Misal ketika kita gunakan perintah npm start, maka akan menjalankan script prestart, start dan poststart
Kode : Menjalankan Start Script
07. Export Module
Main
- Sampai saat ini, kita tidak pernah membahas tentang attribute main di package.json
- Attribute main adalah entry point yang akan di-load ketika kita me-load NodeJS Project / Package
- Pada kasus ketika kita membuat aplikasi, mungkin tidak terlalu berguna, tapi pada kasus ketika kita membuat library yang akan digunakan di banyak project, baru attribute main ini akan terlihat kegunaanya
- Problem ketika kita menggunakan attribute main adalah, kita cuma bisa mengekspos satu file JS, oleh karena itu penggunaan attribute main sebenarnya sudah tidak direkomendasikan lagi
- Sebagai penggantinya, terdapat attribute export yang bisa digunakan sebagai konfigurasi untuk mengekspos file JS
- Yang menarik dari fitur export ini, kita bisa membuat alias ketika mengekspos file JS, sehingga tidak perlu menggunakan nama file JS aslinya
Menggunakan Module
- Untuk menggunakan module yang sudah di export, kita cukup gunakan import dari nama module yang di export tersebut, namun ganti tanda . (titik) dengan nama package yang ada di package.json
- Misal :
“.” menjadi “belajar-nodejs-npm”
“./write” menjadi “belajar-nodejs-npm/write”
Kode : Menggunakan Module
- Salah satu fitur yang sangat berguna dalam NPM adalah dependency management
- Saat kita membuat aplikasi, sering sekali kita akan membutuhkan dependency ke library atau package pihak lain, misal package open source, atau package yang kita buat sendiri
- NPM mendukung dependency management, sehingga kita tidak perlu download package yang kita butuhkan secara manual, termasuk tidak perlu melakukan update dependency secara manual ketika ada update terbaru
- Secara default, NPM akan download dependency dari website https://www.npmjs.com/
- Kita bisa mencari open source package atau membuat open source package disana jika kita mau
- Untuk menginstall dependency, kita bisa gunakan perintah :
npm install namadependency@version - Atau bisa langsung tulis di dependencies di package.json
Download Dependency
- Untuk download dependency, kita bisa gunakan perintah :
npm install - Secara otomatis NPM akan download package yang ada di dependency ke dalam folder node_modules
- Selain itu, NPM juga akan membuat file package-lock.json yang berisikan informasi versi package yang di download, ini untuk mempermudah ketika kita melakukan download ulang library di komputer lain
09. Dependency Version
Semantic Version
- NodeJS merekomendasikan menggunakan semantic version dalam menentukan format version pada package yang kita buat
- https://semver.org/
- Jika kita perhatikan, kebanyakan package di https://www.npmjs.com/ menggunakan semantic version
Dependency
- Salah satu kegunaan menggunakan semantic version adalah, kita bisa menentukan versi package yang ingin kita gunakan secara dinamis, tanpa harus melakukan hardcode pada versi tertentu
- Ada beberapa aturan yang bisa kita gunakan ketika menentukan versi dependency yang ingin kita gunakan di package.json
Menentukan Versi Dependency (2)
Note:
1.0.0 menjadi 2.0.0 ini kalau belum kompatable (kodenya diubah/nge-break)
1.0.0 menjadi 1.1.0 ini kalau menambah fitur
1.0.0 menjadi 1.0.1 ini kalau update karena ada bug sebelumnya
10. Development Dependency
- Di package.json, terdapat dua jenis dependency, production dependency dan development dependency
- Dependency management yang sebelumnya kita bahas adalah production dependency, yaitu dependency yang dibutuhkan ketika aplikasi kita berjalan
- Sedangkan development dependency, adalah dependency yang dibutuhkan khusus ketika proses development, contoh yang sering misal dependency unit testing, yang cukup digunakan ketika development, tetapi tidak dibutuhkan ketika aplikasi berjalan
- Untuk menambah development dependency, kita bisa tambahkan di bagian devDependencies di package.json
- Atau gunakan perintah : npm install namapackage --save-dev
- Untuk download dependency, sama seperti download production dependency, kita bisa gunakan perintah : npm install
Kode : Development Dependency
Kode : Menggunakan Dev Dependency
Kode : package.json
Kode : index.js
Kode : Menggunakan Dev Dependency
Install Dependency Tanpa Development
- Secara default, saat kita gunakan perintah npm install, semua dependency akan di install, termasuk development
- Ada baiknya, ketika kita mau jalankan aplikasi di production, kita tidak perlu menginstall development dependency, caranya kita bisa gunakan perintah:
npm install --production
11. Membuat Library
- Sekarang kita akan coba praktek membuat opensource library/package
- Dan akan kita coba publish package yang kita buat ke https://www.npmjs.com/
- Silahkan daftar terlebih dahulu ke websitenya
Kode : package.json
Kode : index.js
12. Publish Package
Login ke Web NPM
- Setelah membuat library/package, selanjutnya kita perlu login terlebih dahulu ke Web NPM menggunakan perintah NPM
- Kita bisa gunakan perintah :
npm adduser
Kode : npm adduser
Publish Package
- Setelah login, sekarang kita bisa melakukan publish package ke web NPM dengan menggunakan perintah : npm publish
- Perlu diingat, nama package itu harus unique secara global, jadi pastikan sebelum publish ke web NPM, pastikan tidak ada package dengan nama yang sama
Hasil Publish Package
13. Install Package
- Setelah library yang kita buat kita publish ke npm, selanjutnya kita bisa install package tersebut di project yang kita inginkan
- Caranya sama seperti menginstall dependency yang lain
Kode : package.json
Node Modules
Kode : Menggunakan Library
14. Ignore File
- Saat kita publish package ke web NPM, secara default, semua file yang terdapat di project akan di publish ke web NPM
- Kadang kita ingin meng-ignore beberapa file agar tidak ikut terpublish ke web NPM
- Untuk itu, kita bisa membuat file .npmignore
- Format pemulisan .npmignore sama dengan format penulisan .gitignore
- Jadi kita kita sudah terbiasa menggunakan Git, maka kita tidak perlu belajar lagi
- NPM secara default akan membaca file .npmignore untuk melakukan ignore file
- Namun, jika file .npmignore tidak ada, maka NPM akan coba membaca file .gitignore
- Oleh karena itu, jika kita sudah memiliki .gitignore, kita bisa saja tidak perlu membuat .npmignore lagi, kecuali jika memang ingin melakukan ignore file yang berbeda
15. Upgrade Library
- Untuk melakukan upgrade library/package yang sudah kita buat, caranya sangat mudah, kita cukup melakukan update version di package.json
- Namun perlu diingat, lakukanlah upgrade package dengan mengikuti kaidah semantic version
Aturan Semantic Version
- Jika melakukan bugfix, tidak ada code break, upgrade versi PATCH
- Jika menambah fitur, tidak ada code break, upgrade versi MINOR
- Jika mengubah fitur, dan melakukan code break, upgrade versi MAJOR
Kode : package.json
Note:
Main file dari exports filenya harus sama dengan file yang di main jika ingin menambah exports agar tidak ngebreak bagi yang sudah menggunakan packagenya
Publish Package
- Setelah melakukan perubahan package, dan yakin dengan perubahannya, kita bisa lakukan publish package lagi
- Pastikan version nya sudah kita ubah sesuai aturan semantic version
- Gunakan perintah : npm publish
Update Library di NPM Web
16. Update Dependency
Update Library
- Untuk melakukan update library dependency, yang perlu kita lakukan adalah mengubah versi dari dependency nya
- Atau jika kita sudah menggunakan version ~ atau ^, maka kita bisa secara otomatis melakukan update dengan menggunakan perintah :
- npm update namapackage
- Atau jika kita ingin melakukan update semua dependency, gunakan perintah:
- npm update
Kode : Hasil Update
Kode : Test Feature Baru
17. Materi Selanjutnya
- NodeJS Unit Test
- ExpressJS
- NodeJS Database
- Dan lain-lain
0 Komentar