asdf เครื่องมือที่จัดการ Version ต่างๆครอบจักรวาล
สวัสดีครับ วันนี้มาแนะนำ Tool สำหรับจัดการ Version ของเครื่องมือ ของภาษา Programming ต่างๆ ชื่อว่า asdf-vm สามารถจัดการได้ทั้ง Node.js, Python, Ruby, Java, Swift, Kotlin, Dart, PHP, Golang, และอื่นๆ เรียกได้ว่าครอบจักรยาน เอ้ย! จักรวาลกันเลยทีเดียว
ก่อนหน้านี้ ผมชอบ Reset เครื่อง Mac ตัวเองบ่อยๆ (แบบ Clean ไปเลย) ทุกๆ 6เดือน - 1ปี ไม่ชอบใช้ Time Machine เพราะไฟล์ git ก็อยู่ github หมด ไฟล์งานก็ Google Drive / iCloud หมดแล้ว แทบไม่มีอะไรจำเป็นในเครื่อง
ทีนี้เวลาผมลง Mac OS ผมใช้แค่ Script laptop นี้ ก็ได้ Environment ที่ตอบโจทย์การทำงานผม แทบเกือบหมดละ เหลืออาจจะมีโปรแกรมอื่นๆ เล็กๆน้อย ก็ค่อยทยอยลงเพิ่ม หรืออาจจะมี Dotfile ของตัวเอง ก็จะ base จาก dotfiles ตัวนี้เช่นกัน
asdf หรือ asdf-vm คืออะไร
asdf เป็น Version Manager ครับ ตัวจัดการกับ Version ของภาษา Programming ต่างๆครับ ซึ่งข้อดีคือ มันใช้ตัวเดียว ทำได้ทุกๆภาษาครับ
จากที่เมื่อก่อน สมมติเขียน Node.js ก็อาจจะใช้ n หรือ nvm ส่วนเขียน Ruby ก็ใช้ rbenv หรือ RVM จะเปลี่ยน Version ทีนึงก็ต้องสลับภาษา สลับ Tools และก็ใช้ไฟล์ config แยกกันอีก (ยกตัวอย่างแค่ 2 ภาษานะ ถ้าคนเขียนภาษาอื่นๆ ก็ต้องใช้ไฟล์ config และก็ Version management อื่นๆ เพิ่มเอีก)
ข้อดีของ asdf คือ
- ตัวเดียวเอาอยู่ ใช้ไฟล์
.tools-version
ไฟล์เดียวเลย - รองรับ config ของ Tool ตัวเก่า เช่น
.node-version
,nvmrc
,.ruby-version
อะไรพวกนี้ - สามารถสลับ runtime ได้ ตาม folder เรา แยก local หรือใช้ global ก็ได้ เช่นโฟลเดอร์ A ใช้ local แต่ถ้าปกติ จะใช้ global ไรงี้
Install asdf-vm
คนใช้ Mac OS นั้นติดตั้งผ่าน Homebrew เลยครับ ง่ายมาก
่ส่วนถ้าติดตั้งผ่าน git หรือจาก source รวมถึงตั้งค่า bash / zsh /fish แล้วแต่เครื่องครับ ลองดูรายละเอียดเพิ่มเติมประกอบเนอะ จริงๆผมไม่แน่ใจครับ ว่าต้อง set อะไรเพิ่มเติมมั้ย พอดีว่าผมรันจาก script laptop มัน install และ config ให้แล้ว 😂
ส่วน Windows User ไม่มั่นใจว่าสามารถติดตั้งผ่าน cygwin ได้มั้ยนะครับ ต้องลองไป install ดูนะครับ ส่วนนี้ขออภัยด้วยครับ
คำสั่งที่ใช้บ่อยๆ
ทีนี้มาดูคำสั่งที่ผมใช้บ่อยๆกันบ้าง
List plugins
เริ่มจาก ดู plugin ของเราว่ามีอะไรบ้าง และ list plugins ทั้งหมดที่มีของ asdf
เพิ่ม Plugins
ต้องการเพิ่ม plugins เช่นภาษา Node.js หรือ Go หรือ Dart ก็แค่
เพิ่ม Plugin เป็น Package Manager แล้วแต่เรายังไม่มีภาษานั้นๆ ทำได้โดยการเพิ่ม
ดูรายชื่อ Version ของภาษานั้นๆ
ทีนี้ก่อน install แต่ละเวอร์ชั่น เราสามารถ list ดูว่าภาษานั้นๆมี version อะไรให้ install บ้างด้วย
หรือจะดูว่าในเครื่อง machine เราเนี่ย install ไปกี่เวอร์ชั่นแล้วบ้าง ก็ list ได้เหมือนกัน
ตั้งค่า Version ปัจจุบัน
มี 2 วิธีคือตั้งแบบ global และแบบ local แยกตาม folder ครับ
หรือเฉพาะ folder myApp เป็น เวอร์ชั่นอื่นก็ได้ เช่น
ดุ Version ปัจจุบันของทุกภาษาในเครื่อง
ไฟล์ config แบบ global ก็จะอยู่ที่ ~/.tool-versions นั่นเอง
หมดแล้วครับ จริงๆก็เป็น Tools เล็กๆที่ผมว่าน่าจะมีประโยชน์กับ Developer เราๆทั้งหลายแน่นอน เพราะปัจจุบันคิดว่าน้อยคนนัก ที่เขียนแค่ภาษาเดียวนะ 😎
สุดท้าย
ลืมคำสั่งหรอ? พิมพ์ asdf
ดุซิ
เฉียบ!
Happy Coding ❤️
Reference
- Authors
-
Chai Phonbopit
เป็น Web Dev ในบริษัทแห่งหนึ่ง ทำงานมา 10 ปีกว่าๆ ด้วยภาษาและเทคโนโลยี เช่น JavaScript, Node.js, React, Vue และปัจจุบันกำลังสนใจในเรื่องของ Blockchain และ Crypto กำลังหัดเรียนภาษา Rust