Lompat ke konten utama
EP 51

Ngobrolin Package Manager

Ringkasan Episode

Bantu Koreksi

Berangkat dari keheranan sehari-hari — memasang satu paket lewat npm install tapi folder node_modules langsung membengkak — episode ini menelusuri asal-usul package manager, yang ternyata jauh lebih tua daripada ekosistem JavaScript. Akarnya di dunia Linux, tempat sebuah program tidak membawa semua kebutuhannya sendiri melainkan bergantung pada pustaka lain, yang bergantung pada pustaka lain lagi. Dari sana lahir repositori terpusat berisi daftar paket beserta versi, arsitektur, dan dependensinya — nenek moyang registry yang kita pakai hari ini, dengan dpkg di kubu Debian dan rpm di kubu Red Hat. Pendekatan tiap sistem operasi dibandingkan: Windows membundel semuanya jadi satu installer besar, Linux mengunduh dependensinya terpisah sehingga butuh koneksi, dan macOS cukup memindahkan satu bundel ke folder Applications. Homebrew kemudian membawa gaya Linux ke sana. Bagian paling berkesan adalah insiden left-pad: pustaka mungil berfungsi sepele tapi jadi dependensi ribuan paket lain, dan ketika pemiliknya menghapusnya semuanya berantakan. Dari sana pembicaraan bergeser ke celah keamanan yang paling rawan, yang ternyata bukan teknis melainkan manusia — paket palsu yang namanya sengaja dibuat mirip agar tertukar saat salah ketik. Ditutup dengan pengamatan bahwa munculnya Yarn dan pnpm justru menyehatkan: Yarn membawa cache lokal agar tidak perlu mengunduh ulang dan workspaces, pnpm membawa hard link agar berkas dibagi antar proyek dan tidak boros ruang — dan npm lalu ikut mengadopsinya.

Poin-poin Utama

  • Gagasan package manager jauh lebih tua daripada ekosistem JavaScript — akarnya di Linux, dengan dpkg di kubu Debian dan rpm di kubu Red Hat
  • Repositori terpusat berisi daftar paket beserta versi dan dependensinya adalah nenek moyang registry npm yang kita pakai sekarang
  • Tiap sistem operasi memilih pendekatan berbeda: Windows membundel jadi satu installer besar, Linux mengunduh terpisah, macOS cukup memindahkan satu bundel
  • Insiden left-pad menunjukkan pustaka mungil berfungsi sepele bisa jadi dependensi ribuan paket lain — dan ketika dihapus, semuanya ikut berantakan
  • Celah keamanan paling rawan bukan teknis melainkan manusia: paket palsu yang namanya sengaja dibuat mirip agar tertukar saat salah ketik
  • Munculnya Yarn dan pnpm justru menyehatkan npm — masing-masing membawa gagasan baru yang kemudian ikut diadopsi
  • Yarn membawa cache lokal dan workspaces, sementara pnpm membawa hard link agar berkas dibagi antar proyek dan tidak boros ruang disk

yo yo yo halo halo selamat malam kita ketemu lagi di hari selasa malam seperti biasa

selasa malam adalah waktunya ngobrolin wet kita tetap lama nih komposisinya masi masi riza

masis ya di episode yang ke 52 atau episode 53 kita menyebutnya gimana sih 52 dia ya

tetep aja sesuai angka sesuai angka sesuai angka episode ke 52 ini ya kita akan membahas tentang

package menajemen sesuatu yang lagi rameh ya rameh apa itu selalu rameh ini selalu rameh periodikal setiap

ada ada kena masalah ada yang sesuatu yang menawarkan sesuatu yang lebih cepat ada yang baru

gitu kan inovasi inovasi baru ya package menajemen package menajemen ini tergolong baru ya terutama

di web dan javascript karena sebelumnya tidak ada iya karena tidak ada kalau nanti kita akan

bahas ya sejarahnya gimana sekilas jadi sebelum kesana mungkin kita bahas dulu tentang package

menajemen itu apa sih nah ini ada artikel dari mdn yang cukup mewakili jadi salah satu kerjanya

job desk nya package menajemen adalah dependensi menajemen jadi dependensi itu adalah third party

software atau library atau code yang ditulis oleh orang lain terus code itu atau library itu kita

gunakan untuk solving problem yang untuk aplikasi kita sendiri untuk aplikasi kita sendiri bisa yang

dari hal hal kecil misalkan human readable date ya kalau pakai date mungkin dulu kalau pakai

javascript agak susah gitu kan kita butuh moment js kita butuh date fns dan lain-lain itu banyak

ya nah itu adalah dependensi dan yang menariknya dependensi ini bisa juga punya dependensi dari

dependensi yang lain gitu dia saling tergantung sub dependensi sisilahnya jadi kalau misalkan kita

install apa ya react ya react itu tergantung ke beberapa library lain misalkan ada react dom

misalkan ada apa lagi ya banyaklah ya banyak ya utility utility makanya makanya kalau kita install

dan lakukan npm install tiba-tiba di folder node modus kita langsung banyak gitu kan itu adalah

sampai banyak webnya ya apa ya biasa kan kita install satu nih npm install express wah langsung

banyak gitu padahal kita cuman install satu ternyata dependensinya banyak gitu gimana Ivan

ya sedikit lebih jauh lagi tentang depan apa namanya package manajemen ini ya ini kan yang yang

dicerita mdn ini adalah untuk yang javascript tapi kalau kita lebih jauh lagi package manajer ini

cukup populer dan sudah ada sejak lama itu dari linux environment jaman dulu banget kalau saya

lakukan quick searching package manajemen yang pertama kali itu justru adanya di tahun 89 ya jadi

sorry tahun 94 mulai ada mulai ada itu mulai dibangun dari 89 dan 94 itu mulai ada itu waktu

terus zamannya namanya Smith smit dan itu dari IBM AIX jaman itu waktu itu kan jadi begini ceritanya

package manajemen kalau yang di linux ekosistem itu kan kita mau install sesuatu butuh dependensi

beda dengan kita install sesuatu yang ada di windows kalau di windows package installnya kita itu

Lihat transkrip lengkap (632 segmen lagi)

sudah nge-bundle sudah ada dllnya sudah dibundle jadi dll dan XS nya XS nya sudah di SES nya

conf nya cnf nya dll nya sudah dibawa semua di package installer bedanya di windows ekosistem begitu ya

nah makanya dulu teman-teman kalau misalnya install sesuatu dari cd yang di sewa pergi sewa cd bajatan yang

di sewa installer cd bajatan yang di sewa yang di sewa installnya itu kan gede banget ya itu semua

dibawa jadi zip-zip file bahkan apa ya kalau package manager zip bukan zip ya apa installer itu

biasanya exe MSI MSI MSI Microsoft installer nah mse.mse kan tinggal klik dua kali terus ada ada pop up nya

next next terinstall lah semua bisa kita main game nya contoh ya itu semua sudah dibawa kalau di

sistem windows tetapi kalau di linux ekosistem itu berbeda karena kalau kita mau install sesuatu

misalnya install kalau gcc sudah pasti ada ya kalau let's say mau install FFmpeg ya kan itu kan

mesti nggak selalu ada FFmpeg di ya let's put it simple in simple way mungkin FFmpeg film film film film

itu bukan nggak semua distro bawa film sebagai default install ya nggak mesti jadi kalau kita mau install

kalau misalnya di tergantung package installer kalau misalnya di ubun itu apt apt install film nah

film itu kan punya ini ya punya hanya executable film tapi film itu membutuhkan library lain apapun

itu ya mau abcde dan ternyata library lainnya abcde itu butuh butuh library lain lagi XYZ itulah

package manager itu berfungsi kalau nggak dulu zaman itu zaman dulu itu jamannya debian itu

pakai dpkg ya dpkg jamannya si salah kubu kubunya debian dpkg kubunya kubunya redhead redhead

entos rpm ya itu juga ada lagi beda-beda semuanya iya dan itu pusing nah makanya mereka bikin

centralized repositori jaman itu sudah ada namanya repositori ya di mana repositor-repositori

sudah kontain package nya versi nya fourth nya ya misalnya sorry arhitekturnya bahkan arhitekturnya

sampai dependensinya nanti dependensi list nya apa jadi bisa tetap di install berarti itu sebenarnya

apa konsep repositori yang sekarang kita kenal di aplikasi web atau ekosistem javascript itu

kursornya kayak nenek moyangnya itu ya berarti istilah repositori dan daftar packaging digunakan

versinya apa prinsipnya berarti dari ambil dari sini dan jaman itu karena komunitas linux itu

kuat jadi ya banyak researcher-researcher atau banyak mirornya di mana-mana iya salah satunya

kambing ada yang tahu kambingnya iya kambingnya kambing itu adalah server dari UI yang memiror semua

distro-distro terkenal dari linux termasuk juga repositori ini sampai sekarang masih aktif deh masih

ada kadang kalau nge-strip tuh suka nggak sengaja menemukan iya karena kan kalau dulu kan kita pakai

internet kan kalau keluar itu lambat sekali ya kalau di lokal itu penceng kan ix gitu kan istilahnya kan

lokal internet kan nah itu kita ganti tuh APT repositori nya ke kambing ke repositori lokal sehingga

ya instalasi dan kalau dia sentos dulu sentos itu bisa nyari repositor dia bisa punya kehandalannya

dia bisa nyari repositori yang terdekat hmm itu kerennya si sentos ya kita juga punya distro

dia punya distro Blancon Blancon ada banyak sih ada beberapa sih yang tapi udah disenangkan

juga iya dan itu sekilas ya sekilas beda-beda ya masing-masing os beda-beda kalau windows itu dia

ada installernya dia nginstal ke mungkin dll nya dia kopi ke file ke folder mungkin windows 32 atau

mana gitu ya terus installernya dia taro di program start dan lain-lain gitu kan kalau linux dia

mungkin cenderung lebih kecil file nya tapi dependensinya di download makanya kalau kita

install linux itu biasanya butuh internet kalau windows kadang-kadang kalau kita install windows

kan satu cd aja cukup ya atau beberapa cd lah beberapa cd betul dan windows package manager itu baru

ada baru ada akhir-akhir namanya winget winget juga ada chocolate juga ada baru ada dua tiga tahun

belakangan iya yang agak sedikit berbeda lagi mac os mac os lebih sederhana lagi file nya satu enggak

sebelum itu kalau kita misal mau install aplikasi kan kita download tuh download app dot app biasanya kan

kita tinggal jemblungin ke folder aplikasi udah jadi karena itu sebenarnya kayak zip kan semacam

zip kan ya dalamnya ada kan di finder kan bisa dibuka ada isinya sudah instilahnya kalau jaman

sekarang sudah sudah di bandel satu bandel aja satu file that's it gak perlu di install gak ada

di install gitu kan semuanya jadi gak nyampah istilahnya jadi lebih sederhana juga kalau mau

install dan install tapi kekurangannya adalah file nya ukurannya besar karena udah dibandling semua

kayak docker gitu ya kayak image gitu baru kemudian ada bruh bruh bruh bruh itu justru lebih milip

index dia sistemnya dia ada satu direktori khusus gitu kan yang menyimpan lebrese.so.dll

dan lain-lain library yang digunakan di satu folder itu homebrew namanya itu juga package manager

di kesempatan kali ini saya cuma menyampaikan ke maintainer homebrew itu sehat-sehat lah dan

monggak-monggak kalian masuk surga monggak-monggak kalian masuk surga membantu sekali ya banyak orang

terbantu banyak orang terbantu dan juga maintain linux dan npm kedepannya ngomongin sejarah sekarang

kita menuju ke sejarahnya npm ya dari node.js sebenarnya ya iya jadi node.js ini kalau kita

install biasanya dia membawa sebuah package manager namanya npm node package manager ya seperti kita

tahu 2009 ditambah awal mulanya iya tapi kayaknya awalnya belum ada npm disini mungkin dia awalnya

mungkin di tahun yang sama tapi gak langsung iya tapi kayaknya gak barengan jadi dia bikin node.js dulu

begitu udah kira-kira udah mvp nya udah jalan baru dia bikin node package manager mungkin sebelum itu

kayaknya udah ada ya beberapa ya kayak di ruby ada ruby gem ada python python ada juga ada juga

kalau php komposer komposer ya komposer tuh kayaknya lebih baru ya komposer itu udah lama ya

ada yang lebih lama dari komposer sebelum komposer apa ya namanya ya sementar kita cari pier ada yang tau pier ya itu lebih jadu lagi pr pr jauh sebelum komposer

jauh sebelum npm juga ya ini pertama kali jadi dia dalam bentuk zip aja kita download biasa

itu taruh di folder kita ini yang pertama tapi kayak versioning nya berarti ada di zipnya itu kalau si pr itu sama

nah dari 2009-2011 baru mencapai versi satu terus juga node.js diadopsi oleh banyak perusahaan besar kemudian

berkembang berkembang sampai akhirnya ini terjadi masalah disini kan ada yang io.js kalau teman-teman

yang penting jadi node.js ini kok versi nya gak naik naik dari 0.12 gitu kan akhirnya komunitas inisiatif bikin sendiri

supaya naikin versi nya aja padahal node.js udah dipake di mana-mana sampai akhirnya balik lagi sama biar bisa support ks yang mudir ya

oh iya betul sama kemudian akhirnya si node.js memutuskan untuk bikin foundation dan io.js dimers balik ke node.js sampai kemudian 2015 ini npm

sudah bisa ada private module kalau yang kita lihat sekarang di npm.js.com kalau teman-teman npm misal itu adalah npm public ya public registry

nanti kita akan bahas tentang public registry nah setahun setelah bukan npm lahir kan 2009-2011 kan setahun setelah foundation ini jalan

muncul satu kejadian insiden yang luar biasa mempengaruhi banyak banyak apa ya banyak program banyak aplikasi ini namanya leftpad

oh yang dia yang bikin padding terus dia hapus dia hapus iya jadi dia bikin sebuah sebuah library namanya leftpad leftpad itu gunanya buat apa ya antara buat iya leftpad itu kan apa

hapus spasi yang ada di sebelah kiri dari strengka iya iya sederhana sekali bisa kita bikin sendiri padahal tapi ternyata leftpad ini banyak dipakai

di library dependen nya banyak sekali kalau kita lihat di npm misalnya kan npm.js.com itu kan apa nih library yang konek misalkan konek ini adalah salah satu dependensi dari express

middleware dia yang memungkinkan middleware di express itu adalah konek nah kita bisa lihat dependen nya dependen nya ini 3000 jadi ada 3000 library yang

di npm yang menggunakan konek iya bayangkan tiba-tiba konek dihapus mati ini semua nggak bisa pakai gitu itu yang kejadian sama si leftpad jadi ketika udah banyak yang pakai yang apa

ke ketergantungan kepada library ini tiba-tiba si leftpad nya dihapus sama pemiliknya hancur itu semua library iya itu kejadian pertama walaupun akhirnya ya bisa recover ya ada alasannya sih entah di hack entah apa gitu ya

atau ngambek juga ya yang terakhir ngambek kan sama kayak faker.js kan ada yang baru kan faker.js lebih baru dari faker.js iya oh no yang kayak gitu juga karena isu ada yang terakhir kan apa ya namanya itu yang dia

hapus ah lupa deh gue lupa oke dan ini bukan hanya sebenarnya bukan hanya kejadian di ekosistem javascript di python juga pernah kejadian karena ini sifatnya demokratis semua orang bisa bikin gitu ya banyak

yang bisa lagunakan jadi banyak yang menyalahgunakan misalkan npm install monggo db kita bikin aja supaya typo monggo d ada monggo dba ada monggo o nya gak ada juga ada gitu dan ada beberapa yang pakai apa yang dibuat untuk ngambil data lah

kripto lah untuk macam-macam ya jadi harus hati-hati juga dalam memilih jadi apa ya selektif lebih selektif gak sembarangan npm install karena ketika kita melakukan npm install tapi ini menarik juga sih apa jadi sebenarnya celah

security yang paling paling rawan itu sisi manusianya ya entah itu kan berarti manusia kita gak terliti kita gak terliti misalnya monggo apalah kuruf l jadi i atau apa monggo bd jadi monggo bd atau nintainer ngambek dan lain-lain itu celah-celahnya dari dulu sampai sekarang gitu-gitu aja ya betul betul cuman katanya ada beberapa netizen yang bilang ya kalau kalau misalkan kayak taipo gt

itu harusnya bisa di apa ya / tapi auto correct common use case / ya mereka ada beberapa yang menyalakan npm nya npm sebagai company ya npm incorporated nya karena itu bisa diantisipasi dengan yang harus ya kayak ini aja lah kayak google play atau app store gitu jadi harus ada proses validasinya bahwa ini benar bahwa ini gak ada apa gitu jangan terlalu demokratis juga jangan terlalu terbuka gitu ya jadi ya banyak lah

kejadian-kejadian baik itu di saya gak tau dirubi ya kalau di python beberapa pernah dengar cuman di bahasa yang lain saya gak tau gitu ya begitulah jadi banyak kejadian sampai / lupa share screen nya apa? / share screen nya mau di nyalakan lagi ya sampai ya terus 2017 setelah kejadian itu setahun setelah kejadian itu npm mulai fokus ke security ya udah udah banyak lagi semakin banyak yang pakai 3 billion

npm download every week bayangkan servernya kayak gimana itu ya / kan kebanyakan static file / iya sih itu bukan download doang ya / betul betul / terus ya selebihnya sih di nps ya secara umum ya cuman beberapa ada npm juga / udah mulai setel ya berarti udah gak ada decision yang

udah gak ada perubahan signifikan lagi berarti kan habis itu / sudah tidak ada perubahan signifikan betul / paling terakhir ya si 2018 itu bisa pakai file mgs / betul nah seperti biasa seringnya untuk aplikasi apa bukan untuk untuk library atau tools open source itu biasanya di apa ya di di drive juga sama komunitas jadi ketika npm ini banyak disibukan oleh kejadian-kejadian

dan incident-incident yang gak penting seperti ini bukan gak penting ya maksudnya yang ya security dan lain-lain jadi mereka kayak apa ya sumber daya tersedot ke hal-hal security npm sebagai tools-nya jadi kurang apa ya fiturnya kurang berkembang gitu muncul lah beberapa alternatif salah satunya yarn yarn ini pada awalnya dibuat / dibuat OFS yang itu ya / iya iya iya iya iya

oleh facebook ya / oleh orang-orang yang saat itu bekerja di facebook ya meta karena waktu itu juga kalau gak salah react udah mulai berkembang ya udah mulai banyak yang pakai dan mereka merasa npm ini terlalu lambat akhirnya mereka bikin fitur utamanya adalah ketika kita sudah pernah melakukan instalasi sebuah package kita gak perlu download lagi dari internet masih tersimpan di cage atau di lokal kita

kalau versi yang sama bahkan internet mati pun kita masih bisa instalasi / bisa dipakai ulang dari / bisa dipakai ulang itu itu / npm yang baru juga sudah bisa cache sih / justru itu yang tadi saya bilang jadi ketika dia kurang berkembang muncul yang baru untuk mendrive si npm-nya supaya berkembang jadi kayak / bagusnya itu system open source gitu ya / iya / iya kayak yang maksudnya kalau ngomong feature nih kan yarn selama beberapa tahun pertama tuh mereka banyak feature yang

npm belum ada kayak workspaces itu yang paling wow banget pas itu ya abis itu mas sekarang npm juga udah ada / udah bisa betul jadi dia ketika dia mendownload sesuatu dari npm registry dia simpan ke hard disk kita jadi kalau misalkan kita install lagi kita gak perlu konek ke internet jadi menghemat bandwidth juga / kita bingung kok hard disk kita cepet ah habis / nah muncul lagi pnpm

pnpm ini jualannya adalah this space efficient pks manager / bisa link ya / bisa link jadi hardlink / hardlink apa softlink ya pokoknya itulah hardlink ya jadi dia disipan di satu repo di satu folder tertentu ketika ada project kita / node folder gitu / ya node modules kita cuma mengarah ke folder yang itu

gitu gitu / jadi gak ditaruh gak bikin lagi singling ya / iya / jadi pokoknya occupy jadi misalnya size nya berapa satu library itu size nya satu mega lah gitu jadi gak di copy jadi satu mega lagi yang dipakai beneran cuma itu ngaruh banget sih kalau apa / ngaruh banget / pengalaman beribagi / iya ngaruh banget sangat berpengaruh itu awalnya awalnya feature awalnya walaupun kemudian berkembang sama kayak yarn juga ya ada workspaces ada macem-macem ya ada banyak berkembang

termasuk juga si pnpm / satu yang gue suka dari yarn keren banget itu gue suka sampai sekarang gak ada kayak yarn outdated meskipun di npm outdated sudah ada / ada / oh tnpm juga ada / yarn outdated itu bisa keren bisa liatin semua / outdated ada recursive ada flagnya macem-macem / tinggal cinta-cinta-cinta update semua yang kita cinta gak perlu satu-satu / look ivan kok hang / hang ya / emang hang / enggak enggak enggak enggak aman aman

oh gue yang yang berarti / oke dan dia berkembang dia namahin kayak support mono repo yang lagi ngetrend juga sekarang kan si yarn juga bisa ya kalau gak salah ya npm juga bisa gak tahu nih / udah bisa semua sekarang / udah bisa semua / dulu yang paling pertama kali yarn yang pakai workspaces / yarn yes sekarang udah bisa semua / ini apa petfif kurang penting gak penting sih kan ini masing-masing tuh library terpisah ya dan gak ada contensi untuk penamaan

itu nyebelinnya jadi kalau yarn pakai istilahnya itu workspaces nah kalau gak salah npm atau npm pakainya workspaces gak ada s nya itu nyebelin banget ya cuma maksudnya secara fungsi sih sebetulnya / sama / kompatibel lah mirip / iya nah temen-temen pakai yang mana nih kalau saya sih pakai pnpm sekarang ya walaupun npm nya ada kalau yarn udah lama gak dipakai karena kebutuhan kalau misalkan kayak ngajar gitu kan

Kita ekspek orang install node, abis itu harus install iarn lagi kan ribet ya, jadi tetap pake npm dari dulu.

Kalau kita pikir ada npm, saya langsung alias npm.

-Alias npm. -Gue belum pernah pake npm.

Itu package.log-nya sama nggak? Atau dia bikin sendiri?

Ada, ada sendiri, tapi bisa dipake yang udah ada.

Tapi mirip sama, maksudnya kompatabel sih.

Intinya kalau project yang sudah pakenya package.log, gimana?

-Tetap ada, tetap dipake. -Paling di warning.

Kamu udah pake package manager lain, kayak standard, itu standard warning.

Kita kalau pake udah ada package.log JSON ya, itu kan tanda pake npm.

Kita pake iarn juga muncul kayak gitu, nah pake npm sama aja.

Tapi kalau fungsi sama aja.

Untuk lebih detailnya, disini ada komparasi command ya, atau perintah.

Kayak misalkan clean cage seperti apa.

Kalau dia nggak ada clean cage karena disimpan semua.

Cuma jadi kayak satu tempat, di satu tempat.

Cara installnya gimana, iarn nggak perlu pake install ya, boleh pake atau nggak, ini optional.

Jadi iarn spasi express, iarn spasi react gitu.

Kalau pnpm dan npm masih sama.

Jadi kayaknya npm sama pnpm, pnpm ini mencontoh sekali commandnya npm.

Tinggal tambahin pn nya aja di depan.

-Biar orang nggak kusing juga sih, ya kan? -Betul.

Dia juga ada add juga ternyata, baru tahu nih.

-Dia ngikutin iarn juga ya, sama kayak. -Jadi kayak react dan p-react.

-P-react. -Oh iya, apa kabarnya kusingnya?

Ntar lagi, ntar lagi ada yang bikin p-view.

P-swell.

-Uninstall, update. -Nah slow p-react, runtimenya nggak perlu p.

NPX, nah NPX ini, ini yang berbeda ya.

NPX ini adalah executable.

Jadi biasanya kalau dulu kita pakai global, kalau sekarang kita bisa langsung.

Nah ini juga nyebelin, karena antara npm, iarn sama pnpm itu command execute-nya lain-lain.

Kalau pnpm itu pnpm exec.

Nggak ada di situ sih, coba bukain ini deh.

Pnpm ada pnpx kan?

Oh iya, ada ya. Mungkin wrapping kalau yang standardnya pnpm exec.

Terus kalau iarn, iarn bukan iarnx tapi dlx.

Pnpx, ada, ada, saya udah pakai.

Kalau iarn dlx ternyata bukan iarnx.

Oh dlx, beda-beda ya.

Buka aja tuh link-nya ada di chat.

Oke. Oh dlx, beda lagi ya.

Itu fungsinya buat meng-execute entah dari lokal maupun dari remote ya.

Jalanin repository remote.

Tiga-tiganya masih di-maintain ya?

Masih, masih.

Oh di-maintain, di-maintain.

Nah.

Iya.

Apa yang?

Iya.

Saya suka pakai ini juga kadang kalau misalnya nggak, misalnya.

Malas install.

Malas install, malas install BabelJS.

Untuk transpile, yaudah NPI, BabelJS, langsung transpile, beres gitu.

Terus sama semua flight, terus kita ngedeside output-nya.

Iya.

Buat testingnya bisa kalau malas.

Oh iya, benar-benar.

Tapi menariknya meskipun npm ada tool sendiri, yarn ada tool sendiri, npm ada tool sendiri,

yang lain-lain mungkin ada lagi ya, yang kita nggak tahu atau ada yang baru lagi nanti.

Tapi mereka, apa ya, mereka mendownload si library-nya berasal dari...

Sumbernya sama.

Sumber yang adalah npmjs.com, istilahnya itu adalah package registry, jadi package index ya.

Search index lah, kalau kita mau cari package apa, kita ke npmjs.

Ini repository.

Iya, registry.

Nah, jadi plot yang belum tahu perlu banget dibedain antara npm sebagai aplikasi software package manager dan npmjs sebagai registry.

Maksudnya mereka itu perusahaan kan, perusahaan yang memiliki layanan registry.

Jadi kalau, walaupun kita pakai yarn, ya sebenarnya download-nya dari npmjs juga, karena itu dua hal yang terpisah.

Github juga punya loh kayaknya.

Github juga ada, ya terakhir-akhir ini mulai banyak yang muncul, dan npm sendiri sebenarnya nggak hanya publik.

Misalkan temen-temen mau bikin aplikasi yang proprietary, nggak boleh dilihat sama orang, tapi butuh npm, butuh installer npm.

Bisa.

Bisa dibikin private.

Apat, private, mereka justru cari duitnya dari situ, untuk akun premium buat scope private.

Betul, baru kemudian si github mengeluarkan package registry juga.

Ini ada link-nya, buka aja Mas Tiza, kalau github gitu.

Ada yang pernah publik ke registry selain npmjs?

Belum.

Ke github?

Di salah satu project client, dan kondonya kan nggak mau di-share.

Nggak boleh di-share.

Nggak boleh di-share.

Ini, jadi cuma cerita aja, jadi kita tuh bikin komponen-komponen, komponen-komponen kita.

Jadi, website-nya ada banyak, mau di-redesign semua, tapi kan komponen-nya sama tuh ya, card, postcard, header, menu-menu.

Kan intinya sama semua gitu ya, cuma beda-beda.

Jadi, dump komponen, artinya komponen hanya menerima props dan...

Nggak ada logiknya lah, pokoknya UI.

Nggak ada logiknya, pokoknya terima props jadi apa gitu.

Nah, jadi kita publish semua komponen-nya ke private npm registry, github dalam hal ini.

Dan ya sudah, pakai itu aja.

Jadi, semuanya dipublish ke sana, dan ada storybook-nya segala macam, lengkap.

Dan untuk supaya bisa publish, karena komponen-nya udah banyak kan.

Jadi, satu, kita nggak pakai honor repo, jadi satu komponen itu satu registry.

Satu package.

Jadi, num add blah-blah slash article-cut small, artikel-cut small contohnya.

Nah, jadi satu-satu.

Untuk supaya, dan kita maintain-nya pakai satu repo kan, satu repo, monor repo.

Dan supaya bisa publish semua kesana, pakainya learner.js.

Oh iya, learner yang ngetrend banget, pernah dulu ya.

Masih mereka masih pakai sampai sekarang, masih stable.

Ntar, kalau buat publish ke github registry, itu berarti di package.json itu cuma ada kayak itunya ya.

Kayak ada field khusus, apa sih publish ya?

Ada config-nya kan, di package.json.

Kita sudah define npm package.github ini, jadi token-nya itu, waktu kita tambahkan itu di lokal.

Nah, soalnya barusan ada pengalaman nggak penting, berusaha mempublish package ke registry github.

Tapi gagal, alasannya lebih nggak penting lagi.

Karena tiba-tiba nggak bisa login ke npm dari command line.

Kan kalau mau publish package, mesti npm publish ya.

Tiba-tiba nggak bisa login.

Maksudnya apa, kan buka UI login di web kan, terus masukin email dan password.

Betul, bukan karena password-nya salah atau apa.

Terus apa sih, ada konfirmasi OTP yang dikirim ke email, tulisannya gitu doang.

Cuma nggak pernah masuk ke email, udah dicoba berkali-kali.

Ya intinya jadi nggak bisa login kan.

Nah, aneh juga kenapa, tapi nggak ada warning apapun.

Jadi kayak cuma, ya kami sudah mengirim OTP ke email anda, silahkan dicek.

OTP-nya nggak pernah masuk.

Terus kan submit ticket ya, submit ticket ke npm.js.

Ya udah, sambil nunggu iseng nih.

Ya kali pengen lah coba, soalnya kan ada UI-nya juga bagus banget di github.

Di url github repo kita kan jadi ada itunya, package-nya.

Udah berusaha nge-setting-setting, nggak bisa-bisa, jadi kesing.

Nah, at the same time, selama kan udah nggak berhasil publish ke github registry,

besok paginya udah dapat respon dari support desk npm.

Ternyata kasusnya adalah gini, kami nggak tahu kenapa email kamu tuh masuk ke blog please.

Nah, sekarang sudah di unblock lagi.

Ya udah, langsung bisa. Udah, selesai.

Ya udah, akhirnya package itu dipublish ke npm, batal gagal berusaha publish ke github.

Kayaknya sering nge-spec.

Jadi, disini juga udah dijelasin ya, package registry itu apa yang tadi udah kita bahas ya, npm.js itu adalah package registry-nya.

Tapi npm bukan hanya satu-satunya opsi, kita bisa pakai Microsoft Azure, ternyata ada servisnya, dan ada github pakai registry.

Ada GitLab juga kalau nggak salah yang ada, dan ada banyak yang lain.

Atlasian ada nggak sih? / Atlasian itu bitbucket ya? / Dia ada bitbucket. / Yes, coba cari aja.

Google nggak bikin ya? / Iya ya.

Npm dan npm.js itu adalah dua hal yang... / Kalau Google, gue tahu adanya docker registry dia bisa bikin pakai Google Cloud.

Docker registry, Google Cloud, ya.

Ya itu sama juga ya, dengan docker juga sama tuh ya, registry, package registry gitu ya.

Oke, oke. Nah, terus kita bahas apa lagi?

Apa lagi ya? / Terakhir nih yang baru tuh. / Oh iya, yang baru ya, yang baru.

Nah, kan yang lagi hype, yang lagi heboh kan kemarin.

Kalau kita install Node.js, secara otomatis kita install npm dan nps.

Yang menariknya, boon.js yang baru itu ternyata bisa juga punya package manager.

Jadi kalau dia nggak perlu pakai npm, dia langsung pakai boon add gitu ya, atau boon install gitu ya? / Boon install.

Dan itu udah include ya? / Udah include ya. / Sebelum kita masuk ke boon,

kan hype-nya itu kan lagi, boon itu cepat. Boon itu gimana? Boon itu lebih cepat dan segala macem.

Jadi kita demo yuk, tes aja di project beneran gitu, project open source-nya.

Sebelum kita bahas tentang boon lebih cepat. Jadi hype-nya boon itu kan lebih cepat katanya ya.

Kita tes, kita tes.

Buat teman-teman yang belum tahu, boon.js itu adalah alternatif run time.

Alternatif dari setara Node. / Javascript.

Alternatif dari Node.js, tapi bedanya kalau Node.js dan Deno itu menggunakan V8-nya Google Chrome,

mesin engine Javascript-nya Google Chrome yang namanya V8.

Kalau si boon.js menggunakan Javascript Core yang digunakan di Safari dan WebKit.

Kalau buat teman-teman yang bingung kenapa ada apa itu Javascript runtime V8, Javascript Core,

kita kayaknya pernah punya episode Javascript runtime. / Sudah bahas.

Cukup lengkap ya bahas tentang Javascript engine. / Terus macemnya lupa punya episode dulu adalah.

Kita bahas tentang Gecko, kita bahas tentang CSS engine juga banyak di episode itu.

Cari aja nanti di sini. Oh enggak ada ya? Di sini, di mana?

Kayaknya kita perlu melanjutkan itunya kita, projectnya untuk seluruh... / Gallery.

Gallery-nya, terus dibikin... / Betul. / Nanti kita harus lanjut sudah ngomongin itu deh.

Sambil menunggu Ivan siap-siap, kita lihat ini dulu, boon.sh alamatnya.

Nah di sini teman-teman bisa lihat ya, perbedaan itu jauh sekali.

Kita enggak bisa menelan mentah-mentah si benchmark sih ya, harus coba sendiri.

Ya namanya marketing. / Lumayan. / Iya.

Kalau pakai database tuh. / Pasti lebih cepat.

Mungkin dia tulis di sini dia paling lag kan.

Nggak lebih lambat, nggak mungkin. Iya sama ini, kadang kan 100-200 atau 300% lebih cepat.

Tapi lebih cepatnya itu misalnya 100 millisecond dibanding 300 millisecond.

Yang mana buat kita tahu project pada umumnya ya.

Maksudnya kecuali kita punya project yang ekstrim, yang berat banget, kita harus LLM atau apalah.

Tapi kalau kita project regular, kayaknya 100 millisecond sama 300 millisecond,

kaya practically nggak ada bedanya.

Tapi ya menarik sih, minimal ada alternatif dan menariknya pakai engine yang selain V8 jadi nggak monopoli lah.

Bagus kan itu karena boon, ngedorong ekosistem juga. / Betul.

Yang menariknya lagi, aplikasi teman-teman yang sudah di-develop dengan menggunakan JavaScript dan OJS,

kompatibel dengan Boon dan juga dengan OJS. / Terus jalan aja, sama.

Kalau nggak kompatibel, nggak ada yang mau pakai. / Betul.

Saya belum ngecek ya, kalau Boon ini kan dia pakai package management sendiri.

Gimana dengan Deno? Deno kalau nggak salah kita bisa mendefinisikan URL library kita di import kita kan.

Itu yang membedakan Deno dengan NPM juga kan.

Kalau NPM kan Import React From React kan. Kalau Deno itu kan ada Import React From @reactjs.com/blablabla gitu lah.

Kalau nggak salah. Tolong dikoreksi kalau salah ya.

Mereka tuh pakai package managernya apa ya? NPM juga apa? Kompatibel dengan NPM kali ya?

Oh pakai URL mah. / Pakai URL kan, bener kan? / Iya.

Jadi mereka nggak pakai package manager gitu?

Ya mungkin mereka internally kan pasti harus ada suatu bentuk management kan.

Harus ada di-store minimal itu di-store di mana dan ada listnya packagenya apa, versinya berapa.

Itu berarti suatu jenis, suatu bentuk package management.

Ini contohnya nih. Export blablabla URL. Nah yang menariknya dengan pendekatan seperti ini kita bisa punya registri sendiri.

Yang private mungkin. Jadi nggak perlu NPM JS gitu kan. Kalau kita mau taro di server kita ya taro aja udah gitu.

Itu yang menariknya. / Oke. Udah. / Oke. Siap-siap?

Siap-siap. Siap-siap. / Asik. Demo demo. / Demo demo. Bukan deno ya.

Demo deno. / Oke. / Demo deno. / Bun bun.

Catatan seorang demonstran. Demonstrancode. / Demonstrancode.

Oke. Application entire screen aja gampang karena harus semua. / Oke.

Mau nggak? / Kesini dulu biar gampang.

Nah. Oops. Salah. / Wiss. / Nah. / Dia habis laporan nih.

Iya. Oke. Sekarang ini projeknya ya. WP paski yang saya buat untuk menambahkan paski fitur ke WordPress.

Di paski ini. / Ini plugin ya. Plugin WordPress ya. / Plugin. Plugin WordPress ya.

Dan saya pakai dev dependency. Dan dependency ini ya. Di paskinya.

Oke. Kita lihat dulu dari sisi. / Eh sebentar. Tunggu. Kita belum bahas nih. Dependency sama dev dependency.

Sekalian aja kita bahas. / Ya. / Apa bedanya? / Sekilas aja. Nanti kalau yang di tell kayaknya episode itu sendiri.

Ini di package.jsonnya saya. Kalau yang dependency itu adalah dependency yang akan dipakai di production atau di live.

Akan di load. / Akan di jalankan pas orang lain, aplikasi lainnya yang pakai, yang install aplikasi kita ngejalanin.

Si dependency itu harus ada ya. Karena bakal dipakai.

Sedangkan dev dependency itu development dependency yang hanya dipakai saat kita nge-develop.

Jadi saat kita melakukan transpile, linter yang episode lalu yang nge-linter. Ini ada ISLint, ada pretier.

Itu kan nggak perlu. Ada feed. / Termasuk juga TypeScript kan. TypeScript kan pas dependency kan nggak perlu kan.

Karena itu dalam JavaScript kan. / Ya dev dependency. / Ya lagi kan kan udah di compile juga pasti di distribute.

Bisa feed, bisa webpack, bisa roll up. Itu semua dev dependency.

Sedangkan kalau misalnya teman-teman pakai loadas yang akan dipakai di production atau di load di client side itu perlu di dependencies.

Berarti analoginya kalau beli makanan, kita beli nasi pecelele dibungkus. Pas kita bawa bungkus kan.

Itu harus ada kertasnya, harus ada nasinya, harus ada sambel, ada karet segala macam.

Tapi kan cobeknya yang buat ngulek sambel itu kan cuma buat proses membuatkan makanannya.

Tapi kan nggak dibawa sama kita pas beli makanan. / Kita nggak perlu bawa pulang cobeknya ya.

Betul banget. / Iya jadi lapar.

Nah saya sudah supaya sah saya hapus dulu note modules ya. Clean ya nggak ada note modules ya.

Yang pertama kita pakai npm install.

Oke note nya saya itu versi 16, terus npm nya versi 8.

Saya masih pakai 16 ya teman-teman karena kebutuhan project.

Oke npm install. Eh salah saya time ya, saya time.

Ditunggung waktunya ya berapa lama ya? / Iya.

Ini kayak dipercepat gitu ya, kayak 2x. / Oke, 8 detik.

8 detik, kita hapus. / Hapus lagi.

Kita hapus, sah ya, nggak ada lagi, sudah. / Sekarang pakai boon.

Boon, install. Oke boon, lanjut.

Siap boon. / Ses. Berapa? / 0,02.

Cepet banget sih asli. Sampai nggak ada loader, nggak ada apa sih sambil ngomong langsung ngobrol.

Gila cepet banget. / Dua-duanya npm saya sudah punya cache, boon saya juga sudah punya cache.

Jadi bukan download lagi. Dua-duanya sudah punya cache.

Coba lame rave lagi, note module nya di hapus lagi.

Oke. / Terus npm install lagi.

Ini nggak dari cache ya? / Enggak.

Oke. / Oh wow.

Cepet sekali. Jauh. Jauh sekali bedanya.

Sudah kelihatan ya? / Kelihatan ya? / Biasa.

Sah, sah ya, sah. Oke. Sekarang Bill.

Saya ada Bill. Bill nya jelasin sedikit biar temen-temen tahu.

Jalannya npm run clean dan feed Bill.

Run clean nya itu cuma bersih aset direktur saya di hapus.

Mnlf doang. / Dibuild lagi.

Dan feed saya itu gini doang, config nya.

Ambil config bla bla bla, roll up.

Ada 2 endpoint, user profile sama login js.

That's it. Dan ada external global.

External global itu dari WordPress global yang kita cerita kemarin ya.

Jadi supaya nggak perlu di-compile.

WordPress global nya nggak perlu di-compile.

Oke. That's it. Simple.

Oke, sekarang. / Kita coba pakai, tadi kita install pakai npm ya.

Time, npm, run, build.

Oke. Gede gede gede gede gede gede gede gede.

1,6, 1.

Lumayan, lumayan. / Second. Ini, ini. / Nggak lama-lama.

Oke. / Oke. / Kita coba pakai boon.

Npm, salah.

Time, boon, run, build.

Dia tetap bisa sama mengikuti package.json script.

Oke. / Si boon. / Nggak perlu diubah apa-apa ya.

Nggak perlu. / Tanpa ada perubahan sama sekali ya. / 1,97.

Wow. / Lebih cepat ya.

Jauh ya. / Oke, balik lagi ke npm.

Oke, 1,56.

Kita buat 2 kali deh biar kerasa.

Biar nggak ada sulap, nggak ada sihirnya gitu ya.

Tetap terasa ya. / Jauh ya, jauh ya.

Hampir 50% kepotong ya.

Ini kan proyeknya simple ya.

Kalau misalnya kalau sudah sampai gede banget, itu pasti lebih kerasa lagi sebenarnya.

Karena apalagi kalau kita sudah ngomongnya sudah... / Makin banyak nih pendensi.

Multiple endpoint, ya.

Multiple entry, multiple entries. Itu banyak banget kan, multiple entries.

Nah, kalau sudah multiple entries. / Apa target build-nya?

Ini aja saya sudah pakai feed.

Saya nggak tahu kalau misalnya pakai webpack seperti apa.

Proyek yang pakai webpack saya rata-rata internal, jadi nggak bisa saya show di rekaman.

Jadi...

Rekap untuk installnya sendiri,

selisihnya jauh banget.

7 detik dan 1 detik.

Untuk build time?

Ini kan npm install.

Lebih cepat, tapi nggak se-signifikan itu.

Kalau untuk build, ya lebih cepat.

Installnya jauh lebih cepat.

Sedangkan build-nya 50% lebih cepat.

Nggak terlalu signifikan.

Oke. / Nah, tanya kalau dari segi isi,

struktur-struktur isi sama ukuran modus sama nggak?

Antara pakai npm sama pakai boon?

Oh iya, benar. / Isi apa nih?

Jumlah ukuran node modules-nya.

Apakah ada yang di simling atau semacamnya nggak?

Itu sama persis. / Gimana cara ngeceknya?

Bukan node modules-nya.

Kalau node modules-nya sama...

Kalau dilihat sekilas mungkin sama ya?

Di hitung jumlah folder-nya bisa nggak dari node modules?

Atau pakai CLI?

Wartcount?

Ah, DU aja. / Coba ya.

Itu pakai Wartcount, tanya aja sama Warp AI.

219 MB, supaya kita hapus dulu ya.

Terus ini npm apa boon?

Itu tadi npm, yang terakhir itu npm.

Sekarang kita pakai boon, install.

0.22

Lebih kecil. / Lebih kecil?

Berarti ada... / Ada sesuatu yang dioptimize.

Ada yang dioptimize. / Ada yang di simling atau di harcling atau apa?

Kita hapus ya. / Npm install.

Terus kita coba pakai npm install.

Ya, 50 MB. / Iya, sama.

Maksudnya konsisten kayak sebelumnya.

Dan boon itu pakai ini ya.

Saya lihat boon itu dia ngebikin lock-nya sendiri.

Iya, ada lock-nya sendiri.

Dan nggak bisa binary lagi.

Binary ya? Bukan JSON ya?

Iya, padahal semua kalau npm, yang npm semua kan JSON.

Iya, binary lagi.

Menarik ya? / Menarik sekali ya.

Cepat-cepat. / Coba iseng ad.

Kita konten pakai yarn deh. / React.

Ada nggak sih? / Yarn-yarn.

Nggak punya. Oh punya, udah nggak pakai. / Udah punya.

Coba time-time. / Gimana cara update-nya? Gue lupa.

Yarn install.

Yarn install -g yarn. / Ada, yarn.

Yarn versi yarn terbaru berapa lihat dulu? Jangan-jangan emang udah baru itu.

Coba lihatin dulu.

Yarn itu versi berapa sekarang?

Karena yarn saya udah lama nih, nggak pakai.

Release, versi 3, 363.

Udah lama sekali itu. / Saya satu berapa.

Yarn self-upgrade. / Yarn self-upgrade, ada ya.

Yarn install -g. / Tanya aja sih ini.

AI. / Update. / Iya work kan, pakai work AI kan.

Yarn install. Update yarn.

Yarn.

Ya, update yarn.

Pakai NPM ternyata.

NPM install, -g. / Iya.

Yarn, memang begitu kan? / Iya. / Duh, nggak bisa ke-copy.

Bisa langsung insert ke... / Iya, itu bisa.

Ada chat GPT-nya. / Udah pakai work itu kayaknya.

Kalau misalnya tiba-tiba pakai CLI biasa lagi jadi beku gitu deh.

Nggak bisa. / Waktu itu installernya dimana?

Coba, where is... eh, where ya?

Where is yarn? / Di node.

Di NPM ya? / Iya, tapi di NPM...

Oh, NPM? / Coba deh. / Gak, gue pake ini soalnya.

Pake NPM kan. / Oh, yang 18. Itu 16 yarnnya.

Iya. / Sama.

Gak apa-apa sih, pakai yarn aja. Coba iseng bandingin.

Min-g, yarn.

Nggak bisa. NPM, NPM. / Eh, salah ya.

Oh, mungkin karena ZSH.

Karena ZSH dia nge-catch.

Oh, harus di restart tuh ya? / Nggak sih, nggak.

Ya udah lah, coba aja lah.

Time, yarn install.

Time yarn install. / Enak ya kalau punya project.

Time-time. / Lupa sendiri. / Bisa buat.

Playground. / Playground.

Karena yarn gue belum pernah punya ini nih.

Ya, jadi semua ke-download ya. / Nanti kita coba apus dulu.

Coba sekali lagi di-abuse. / Biasa.

Kalau ini kan tergantung internet masing-masing, jadi nggak...

Afdo. / Nggak valid. / Iya. / Nggak Apple to Apple.

Tuh, ini package manager install semua dependensinya nih.

Kemana-mana nih.

Gue nggak tahu nih apa aja isinya.

Ist number.

Archiver.

Anda lo yang bikin ist number gitu ya.

Tapi dipake juga, padahal tinggal ist number doang.

Ada yang pake.

Tapi sampai jadi ada package bercandalan tau nggak sih yang ada is 13.

Ada. / Nge-check apakah yang di-pass adalah angka dan angkanya 13.

Terus jadi aneh-aneh gitu, itu kayaknya buat orang belajar full request gitu.

Is 13, is 14.

Yang lucu, sambil menunggu ya, yang lucu NPM itu kalau di kiri atas itu

selalu ada kepanjangannya dan kepanjangannya itu beda-beda.

Kepanjangannya yang random work gitu kan. / Terus nanti kalau kita refresh lagi,

ada nanti lagi Narnia Produce Magic. / Narnia Produce Magic.

Ini dari mana ya dia dapetin?

Ninja Power Manifesto.

Oke, banyak ya jadi ini.

Udah selesai? Siap.

Eh, salah. Sorry, sorry, sorry.

Dah. / Dah.

Lebih cepat.

Lebih cepat dari NPM. / Downloadnya lebih cepat, tapi selesainya hampir 7.

Lebih cepat dari NPM. / Lebih cepat dari NPM.

Tapi, tetap. / Nggak terlalu signifikan ya NPM sama.

Mungkin ini versinya juga udah. / Lebih cepat dari NPM.

Ya. Versinya juga mungkin. / Boon nggak sempelahkan.

Boon. / Time, time, time.

Ces. / Wow. / Gila, gila, gila.

Eh, coba. Remove lagi, terus install yarn lagi, lihat size-nya berapa.

Oh iya. / Oh iya, tadi kita ngeliat ya. / Tapi apa tadi?

DU.

Cross Amp.

DU.

Sama. Kayak si Boon. / Sama seperti Boon ya.

Boon 172 tadi. / Iya.

Jadi dia pakai algoritma yang mirip ya.

Iya.

Alright. / Dah terjawab sudah.

So far untuk project WP paski, Boon lebih cepat.

Maka gue pindah ke Boon untuk paski ini.

Berani nggak pakai di production? Untuk Boon? / Oke.

Oke. Langsung ya. / Tapi kalau, apa? / Udah versi satu lagi ya.

Kalau untuk plugin ini gue nggak perlu. / Oh, ini kan open source ya, bebas ya.

Maksudnya untuk project client gitu.

Ini kan ujungnya jadi build kan.

Oh iya, jadi build. / Kalau di build sih mau pakai suaranya aman ya.

Kecuali kalau server ya, express gitu, back-end ya. / Itu beda cerita.

Atau kalau misalnya ada setting khusus kayak ada monorepo atau apalah yang...

Apa sih, ada caranya sendiri ngecek dependensi lokal atau apa, nah itu males sih itu.

Gue langsung add commit sekarang, boon log B. Dan selesai.

Mantap.

Nah, tadi kan saya sempat nanya tuh di Deno gimana sudah terjawab, ada di dokumentasi.

Mereka nggak ada konsep package manager, karena semuanya berdasarkan URL.

Jadi berarti setiap jalan itu manggil dari URL-nya sendiri ya?

Kayaknya disimpan juga sih, di caged juga sih, kayaknya di caged juga sih. / Harus ada cara dia nyimpen kan.

Sebenarnya lokal itu kan intinya kayak gitu kan? / Iya.

Capek juga kalau setiap kali ngejalanin manggil tuh URL aslinya.

Iya, jadi misalkan kita import bla bla bla from bla bla bla, itu pada saat pertama mungkin dia install dulu.

Saat kedua dia pakai yang sudah ada, gitu lah kira-kira. / Iya tinggal di-compare aja kan? / Iya, betul.

Pada waktu dia dipanggil, itu versi berapa? Kalau misalnya besok dipanggil lagi, ya udah ambil dari situ.

Sekarang bikin command alias npm jadi boon.

Kalau kita type-nya npm yang jalan boon. / Iya.

Dulu saya melakukan itu tapi dengan tnpm. / Tnpm. / Yang sering salah kan?

Betul, cuma kalau misalkan sering demo atau ngajar gitu ya, banyak yang terdistraksi karena "loh kok npm-nya beda, progress-nya beda kan?"

Jadi pasti pada "ngah, kok beda, gimana caranya?" jadi malah terdistraksi. Jadi akhirnya nggak jadi alias.

Jadi kalau misalkan lagi demo ya tetap pakai npm, tapi kalau lagi sendiri ya udah, baru aliasnya nggak dimasukin ke konfigurasi jadi manual aja.

Alright, ada lagi yang mau kita bahas di package manager? / Sama teman pada pakai apa?

Coba tuh si command pakai apa, yang paling disukain apa, yang paling dihindarin apa, terus apa ya? / Curhatnya apa, pakai apa?

Kalau gue curhat pnpm nih, kan nyoba turbo repo ya? Jadi combine antara pnpm, turbo repo, ya maksudnya ini udah beda konsep lagi ya.

Bukan perkara strictly karena package manager-nya apa, tapi turbo repo kan struktur kayak mono repo, cuma mereka punya apa, convention sendiri.

Itu cepet banget. Tapi kalau buat deploy, terutama kalau pakai semacam Prisma atau apapun itu yang ada build-nya itu,

sekarang lupa dan agak nyesel juga kenapa dulu pas ngalamin masalah itu nggak nulis artikel atau apalah, sekarang udah lupa.

Intinya kalau misalnya setting mono repo, entah pakai turbo repo atau semacamnya, pakai pnpm itu kadang-kadang bakal ada quote-nya

yang kita harus di .file atau di npmrc harus ngasih sesuatu lah, pokoknya harus ada yang ditambahin.

Cuma karena sekarang lupa apa, nanti deh gue tambahin di komen. / Siap-siap.

Ya pokoknya package manager itu bisa punya behavior yang karena kan dia memanggil dependency, terutama kalau turbo repo kan

masing-masing ada node modules-nya tuh, dan belum lagi ada kayak simplink, ada hardlink.

Nah itu tuh siap-siap aja kalau struktur project-nya kompleks kayak gitu, bisa ada behavior yang mau nya diluar ekspektasi kita.

Yang unik-unik, yang aneh-aneh.

Terutama kalau paken makin aneh package managernya, makin besar kan sekitar ketemu hal-hal aneh.

Kalau project kita strukturnya rumit, tapi kalau tadi kayak yang di demo-in Irfan itu, ya udah satu repo,

tapi satu doang package JSON dan node modules-nya ngebuild, ya udah itu mah apa.

Ya, oke kalau begitu, kalau tidak ada yang mau dibahas lagi, dan kalau temen-temen tertarik, kita mau bahas tentang pun.js,

boleh langsung kesana.in/ngobrolinweb, kasih tau mau dong bahas tentang bun.

Atau kalau temen-temen ada yang di kantornya sudah pakai bun di production,

mau dong kita undang kesini buat kita tanya-tanya, karena kita belum, kita nyoba, tapi belum pernah sampai ke production kan.

Ya dan emang kalau di tempat kerja, pantang lah, tiba-tiba ganti package manager. Maksudnya itu bukan buat apa ya.

Bukan buat apa, enggak ada impact-nya.

Sedikit cerita juga kalau di tempat saya kan kliennya mostly enterprise.

Jadi kalau misalnya untuk pindah apa namanya, pindah artis itu, pindah teknologi, itu harus approval dulu.

Ada paperwork.

Alasannya kenapa harus POC dulu, banyak ya perjalanannya.

Jadi saya harus presentasi dulu, ngobrol lagi, dan dari sisi internal sendiri saya harus ngomong dulu.

Kalau leadershipnya setuju atau directornya setuju, oke baru dibawa ke klien. Itu pun harus berjenjang.

Kalau mau cepat tipsnya kalau mau cepat, kalau pakai bun bisa hemat, biaya, kita biayanya bisa lebih murah 50%.

Wah langsung pasti approve.

Iya kan harus ada impact-nya ya.

Biasa server-nya.

Karena gini juga Mas Riza sama Mbak Eka itu, kalau misalnya pindah asetektur, itu artinya banyak pihak yang akan dihubungi.

Karena gini, dari sisi tim security, mereka harus di update kalau kita pakai misalnya bun versi sekian dan sekian.

Jadi mereka harus tracking vulnerability.

Jadi mereka punya proses namanya security vulnerability test, scan, mereka harus update.

Jadi mereka tahu kita punya aplikasi kita pakai versi apa aja, dan semua yang versi-versi itu harus kita lapor.

Nanti mereka dapat selalu up to date dengan vulnerability.

Jadi mereka harus kasih tahu kita kalau misalnya ada tiba-tiba ternyata paket kita punya vulnerability masalahnya,

kita harus segera dapat update dan itu langsung tiketnya bisa pinol.

Ada masalah vulnerability, tolong segera update.

Apalagi bun ini baru launching kayaknya kalau untuk interface kayaknya ntar dulu kali ya, kecuali untuk proyek-proyek sendiri, open source dan lain-lain ya.

Betul.

Belum terbukti juga.

Kalau tempat kerjaku sih nggak se-strict itu ya, cuma emang ada kesepakatan kalau soal infra,

ini kan sebenarnya termasuk infrastruktur juga ya, package manager punya.

Kalau belum fatal, kalau perkara ada dependency yang beneran updated atau security,

ya itu jelas misalnya itu prioritas.

Tapi di luar itu kalau cuma buat nyoba-nyoba package manager baru,

itu emang kita sepakat minimalisir update lah.

Soalnya remote juga ya kerja remote, ada kantornya, masing-masing punya device sendiri yang spesifikasinya nggak streamline.

Nah kan jangan-jangan bisa aja ada kemungkinan kalau ganti boon tiba-tiba di laptopnya anggota tim lain,

atau di orang QA-nya yang ngetesting, boonnya nggak jalan.

Nah kan harus troubleshooting tuh.

Misalnya ada install-nya di mana ada yang pakai homebrew lah, ada yang pakai globalnya nggak muncul,

itu mesti ada kemungkinan kalau ngabisin waktu dan ternyata untuk troubleshooting kayak gitu.

Jadi kayak di Agus Makatan, kalau yang begitu-begitu jangan diubah lah. Jadi sampai sekarang masih pakai NPM yang standar,

dan semua mesin, semua orang pasti ada kan.

Iya betul.

Kalau kamu mau pergi cepat, bersama startup atau open source project.

Kalau kamu mau pergi jauh, buat project enterprise, tapi slow.

Boring teknologi, itu ada masaknya sendiri.

Tapi stable.

Iya, nggak pusing.

Oh iya, baru ingat gara-gara tadi Eka ngomong, si boon ini belum support native Windows ternyata.

Baru support Mac OS, Linux, dan Windows WSL.

Windows executable-nya belum.

Jadi kalau misalkan ada tim QA yang menggunakan Microsoft Windows sebagai OS di laptop atau di komputer,

dia harus jalanin.

Karena mungkin webkitnya...

Nggak bisa jalanin executable-nya doang kan?

Iya, betul.

Itu contoh aja sih. Maksudnya belum di support semua platform.

Jadi kalau hal-hal teknologi-teknologi baru itu yang banyak ya. Bukan hanya, "Wah ini lebih cepat."

Terus juga begitu lebih cepat, udah kita kayak tutup mata dengan fitur yang lain, kita langsung gelak mata, langsung install gitu.

Nggak langsung pakai, langsung implement, nggak gitu juga.

Kan namanya hype driven development.

Hype driven development sama link-in driven development ya.

Biar nanti di CV kita di link-in itu ada Boon.js.

Boon.js developer.

Berpengalaman 3 tahun menggunakan Boon.js, padahal Boon.js baru 1 tahun.

Loh, Eka kemana? Hilang.

Wah dia belum bayar billing kayaknya ini.

Dari warnet.

Di install ini Boon.js terus mati. Jangan-jangan mati listrik.

Ya sudah kalau gitu berhubung Eka-nya juga sudah menghilang.

Mudah-mudahan ada technical problem kali ya.

Mudah-mudahan minggu depan kita ketemu lagi di jam yang sama, di hari yang sama, selasa malam, jam 8 malam.

Dan Eka-nya muncul lagi.

Loh, tapi wah ini kayaknya koneksi internet ya.

Kira-kira baru habis install Boon.js tiba-tiba menghilang.

Kita sudah pamit, kita pamit lagi sekali lagi.

Sampai ketemu minggu depan, hari selasa, jam 8 malam, bye bye.

Oh iya, perayan 1 tahun.

Jadi jangan lupa.

Kita potong kue.

Potong kue ya.

Sampai jumpa minggu depan, bye bye.

Deskripsi asli dari YouTube

Yuk mari kita diskusi dan ngobrol ngalor-ngidul tentang dunia web. Agar tetap up-to-date dengan teknologi web terkini. Topik, tautan dan pertanyaan menarik bisa dilayangkan ke https://bit.ly/ngobrolinweb ----------------------------------------------------------------------------------- Bergabung menjadi anggota elit di kanal ini: https://www.youtube.com/channel/UCHhAlFGFCGgIusQkQIqJLYw/join Donasi dapat meningkatkan kualitas kanal ini: 💰 https://karyakarsa.com/rizafahmi/tip 💸 https://sawer Kunjungi https://ngobrol.in untuk catatan, tautan dan informasi topik lainnya.

Episode Terkait

Bagikan:

Suka episode ini?

Episode baru setiap Selasa malam. Dengarkan lewat YouTube, Spotify, atau feed podcast favoritmu.

Pilih Cara Langganan

Memuat komentar dari GitHub Discussions...

Jika komentar tidak muncul karena ekstensi privasi / adblocker, kamu bisa berdiskusi langsung di GitHub Discussions .