Modul Bawaan: path, url, os
Mengelola jalur berkas lintas sistem operasi dengan path, mengurai URL, dan membaca info sistem dengan os.
Baterai sudah termasuk
Node membawa puluhan modul bawaan (core modules) yang tidak perlu di-install: fs, path, os, http, crypto, events, stream, util, dan lainnya. Muat dengan require('path') atau import path from 'node:path'.
path: jangan menyambung jalur dengan string biasa
Windows memakai \, Linux/macOS memakai /. Menyambung jalur dengan + '/' + mudah salah (garis miring ganda, titik-titik). Modul path menanganinya:
const path = require('path');
path.join('/app', 'logs', '..', 'data', 'x.json'); // '/app/data/x.json' (menyambung & merapikan)
path.resolve('data', 'x.json'); // jalur ABSOLUT dari folder kerja
path.basename('/app/laporan/data.csv'); // 'data.csv'
path.basename('/app/laporan/data.csv', '.csv'); // 'data'
path.extname('foto.final.png'); // '.png'
path.dirname('/app/laporan/data.csv'); // '/app/laporan'
path.parse('/app/laporan/data.csv');
// { root: '/', dir: '/app/laporan', base: 'data.csv', ext: '.csv', name: 'data' }
path.isAbsolute('/a/b'); // true
path.relative('/app/a', '/app/b/c'); // '../b/c'
join vs resolve
joinhanya menyambung potongan dan merapikan../.; hasilnya bisa relatif.resolvebekerja seperti "cd" berurutan sampai menghasilkan jalur absolut (dimulai dari folder kerja bila tak ada yang absolut).
__dirname dan jalur berkas
Jalur relatif seperti './data.json' dihitung dari folder tempat perintah dijalankan, bukan folder berkas skrip. Agar tidak tersesat, susun dari __dirname:
const berkas = path.join(__dirname, 'data', 'produk.json');
Di ESM: path.join(import.meta.dirname, 'data', 'produk.json') (Node 20.11+).
url: URL dan URLSearchParams
URL adalah kelas global (sama dengan di browser):
const u = new URL('https://toko.id:8080/produk/sepatu?warna=hitam&ukuran=42#detail');
u.hostname; // 'toko.id'
u.port; // '8080'
u.pathname; // '/produk/sepatu'
u.searchParams.get('warna') // 'hitam'
u.searchParams.set('ukuran', '43');
u.search; // '?warna=hitam&ukuran=43'
os: informasi sistem
const os = require('os');
os.platform(); // 'linux'
os.cpus().length; // jumlah inti CPU
os.totalmem(); // memori total (byte)
os.homedir(); // folder rumah pengguna
os.EOL; // pemisah baris OS ('\n' atau '\r\n')
util: alat bantu
util.format, util.inspect (cara console.log mencetak objek), dan util.promisify (mengubah fungsi ber-callback menjadi Promise; dibahas di bab async).