What is zx
zx มันคือ tool ที่ใช้ javascript ในการเขียน shell script ครับ เพิ่งมาใหม่ได้ไม่นานและมันติด trend ใน github และ ยอด github star พุ่งขึ้นเร็วมากจนทำให้ตัวผมนั้นอยากลองเลยมาเป็นบทความนี้ครับ
Background
ตัวผมนั้นไม่ค่อยได้เขียน shell script เวลาไปอ่านรู้สึกได้ว่าค่อนข้างงงเลยครับ (เป็นเพราะว่าตัว syntax ด้วยครับ) และไม่ได้มีเวลาลองจับจริงจังสักที พอเห็นว่าตัวนี้สามารถเขียน javascript on top ได้ก็เลยสนใจครับ
Install
ตัว zx นั้นรองรับตัว esm ครับทำให้เวลาใช้ต้องใช้กับ node ที่มากกว่า node v14.7 + ครับ
yarn global add zx // or npm i -g zx
How to use
เผื่อเป็นการบอกว่าใช้ zx script ให้่เราทำการใส่ shebang บนสุดเหมือน shell script ปกติ
// index.mjs
#!/usr/bin/env zx
วิธีการ run เราสามารถ run ได้ 2 ครับ
-
run script เหมือนปกติ
chmod +x ./index.mjs ./index.mjs
-
run ผ่าน zx
zx index.mjs
หลังจากนั้นเราก็เขียนเหมือน javascript ปกติเลยครับ แต่ตัว zx มัน provide package มาให้บางตัวอยู่แล้วทำให้เราไม่จำเป็นต้อง import มาครับ ดูได้ตาม ลิ้งนี้
feature คร่าวๆที่ผมชอบนะครับคือ
-
$
command
เราสามารถรัน command ได้ผ่านตัว $ เช่น
$
git status“ -
พวก package node พื้นฐาน เช่น os, fs, fetch
เราสามารถใช้งาน os package ได้เลย เช่น
#!/usr/bin/env zx const homeDir = await os.homedir();
-
Executing remote scripts
เราสามารถ execute script ได้ตรงๆ เวลาใช้งาน zx command ตามด้วย arg ที่ขึ้นด้วย https ลองเล่นโดยการพิมพ์
npx zx https://cdn.jsdelivr.net/gh/jungai/zx-for-my-post/index.mjs
จากที่ได้ลองเล่นมาไม่ได้ลองทุก function ที่มัน provide ให้ครับ ผมรู้สึกว่าโอเคผมสามารถเขียน shell script ได้บ้างครับ สิ่งที่ผมเอาลองใช้ก็คร่าวๆถ้าได้ลองมากกว่านี้จะมา deep ให้ฟังกันครับผม