BunJS NPM Run ALL error stdio option

Di bawah runtime BunJS, module NPM Run ALL tidak berjalan mulus, malah ERROR: Invalid stdio option.

Run-p error invalid stdio option
Run-p error invalid stdio option ( Image by InsertApps / Fauzan My )

Rasa penasaran untuk mencicipi teknologi baru tak pernah surut. Kali ini, saya memutuskan untuk beralih dari NodeJS ke BunJS dalam pengembangan Pehthme—HTML Template untuk Hugo Theme dan WP Theme, menggunakan framework TailwindCSS.

Mengembangkan real project dengan TailwindCSS memang harus run “underlaying” with NodeJS.

Meskipun NodeJS telah mencapai tingkat kematangan yang signifikan beberapa tahun terakhir, saya tertarik untuk mencoba BunJS, alternatif JavaScript runtime all-in-one yang super cepat.

Sebagai teknologi web, NodeJs telah mencapai tingkat maturity. Dari segi stablitas, NodeJS sudah sangat stabil.

Buktinya, banyak big-company dan startup skala unicorn menggunakan Node.js dalam produksi, serta turut berkontribusi mengembangkan ekosistemnya.

So, kenapa move on ke BunJS—A fast all-in-one JavaScript runtime—kemarin sore yang balum tentu stable?

Pertama, keinginan untuk mencoba hal baru. Kedua, seperti yang dikatakan Shao Kahn dalam Mortal Kombat versi Ghana: “I don’t want peace; I want problems always.”

I Dont Want Peace I Want Problems Always

Problem pertama yang saya hadapi ketika menggunakan BunJS adalah saat menjalan modul NPM Run ALL.

NPM Run ALL adalah sebuah tools CLI yang spesialisasinya bisa mengeksekusi multiple script secara parraler. Di bawah kendali BunJS NPM Run ALL langsung mengalami kegagalan mesin, dengan menampilkan pesan ERROR: Invalid stdio option.

$ run-p dev:*
ERROR: Invalid stdio option "[object ReadStream]"

Apa Solusinya untuk bun run all ERROR: Invalid stdio option?

Untuk sementara ini (BunJS versi 1.0.18 - 2023), belum ada solusi yang mudah untuk menyelesaikan kasus ERROR: Invalid stdio option "[object ReadStream]"

Bahkan dari hasil penelusuran Google, tidak ada jawaban pasti dari si Mbah. Satu satunya informasi adalah Github issues BunJS nomor #4402 yang dilemparkan oleh user yus-ham.

Bun support npm-run-all solution

Menurut salah satu pengguna BunJs, dari pada pusing cari problem solving bun npm-run-all error ‘Invalid stdio option’, mending ganti ke modul Concurrently.

“Sepertinya modul ini (Concurrently) berfungsi pada Bun, jadi setidaknya kita memiliki alternatif.” tulis Silvenon pada Github issues BunJS nomor #4402.

Concurrently alternatif npm-run-all

Exactly! Setelah mengganti Node module (packages) npm-run-all dengan modul Concurrently, masalah jadi teratasi.

Concurrently adalah modul yang memungkinkan eksekusi simultan atau paralel dari beberapa script atau proses.

Begitu juga dengan modul NPM-run-all, sama-sama mampu mengeksekusi script secara simultan.

Berikut contoh script penggunaan Concurrently:

"dev": "concurrently \"bun run tailwindcss -i ./assets/input.css -o ./assets/css/style.css -w\" \"hugo server --ignoreCache --disableFastRender\"",

Cara mengeksekusi Concurrently:

$ bun run dev

Contoh script NPN-run-all:

"dev:generate": "npx tailwindcss -i ./assets/input.css -o ./assets/css/main.css -w",
"dev:hugo": "hugo server",
"dev": "run-p dev:*"  

Cara mengeksekusi NPM-run-all:

$ bun run dev

Hasilnya malah error

$ run-p dev:*
ERROR: Invalid stdio option "[object ReadStream]"

Apa itu NodeJS Concurrently

Sesuai dengan namanya ‘Concurrent’ memungkinkan eksekusi simultan atau paralel dari beberapa script atau proses.

By default, NodeJS tidak support running script secara simultan atau paralel baris perintah yang di dalam file package.json.

Namun, kita bisa menggunakan modul pihak ketiga seperti concurrently atau npm-run-all untuk mengeksekusi script secara paralel.

Studi kasus:

Pada saat mengoperasikan website ini, saya menggunakan framework Hugo untuk manajemen konten, dan TailwindCSS untuk templating theme.

Sebelumnya, saya menjalankan perintah hugo server dan npx tailwindcss -i secara terpisah, hal ini sangat tidak efisien.

Bun run tailwindcss dan hugo server

Tentu proses development seperti itu sangat membosankan harus membuka banyak jendela Terminal.

Dengan menggunakan modul-modul seperti concurrently atau npm-run-all, saya dapat mengeksekusi multiple script secara paralel yang akan meningkatkan efisiensi kerja.

Maka, muncullah modul seperti npm-run-all atau concurrently untuk mengeksekusi multiple script secara paralel, solusi praktis untuk meningkatkan produktivitas webdev.

Fauzan My avatar

Ditulis oleh Fauzan My

Saya terobsesi dengan seni desain yang elegan dan sederhana, baik yang melibatkan proses kreatif rumit maupun yang sederhana. Di sini, saya menggabungkan keduanya, desain dan coding: mencari best practice.

Tulisan lainnya Fauzan My

Illustrasi programmer perempuan.
Tidak Suka dengan salah satu Class TailwindCSS? Disable Saja
Optimasi SEO pada gambar.
Optimasi Gambar Responsif di WordPress
CSS position sticky.
Cara Membuat Header Tetap (Sticky/Fixed) Saat Di-scroll

Related Post