3 คะแนน โดย GN⁺ 2024-12-09 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

mise คืออะไร?

  • mise เป็นเครื่องมือสำหรับจัดการเครื่องมือพัฒนาหลากหลายชนิด เช่น node, python, cmake, terraform คล้ายกับ asdf, nvm, pyenv
  • จัดการตัวแปรสภาพแวดล้อมแยกตามไดเรกทอรีโปรเจกต์ คล้ายกับ direnv
  • จัดการงานที่ใช้สำหรับการบิลด์และการทดสอบโปรเจกต์ คล้ายกับ make

เดโม 30 วินาที

  • แสดงวิธีใช้ mise เพื่อติดตั้ง node หลายเวอร์ชัน
  • เมื่อรันคำสั่ง which node จะได้พาธจริงกลับมา ซึ่งไม่ใช่ shim

เริ่มต้นอย่างรวดเร็ว

  • วิธีติดตั้ง mise:
    • $ curl https://mise.run | sh
    • สามารถตรวจสอบเวอร์ชันที่ติดตั้งได้ด้วยคำสั่ง $ ~/.local/bin/mise --version
  • ติดตั้งเวอร์ชันที่ระบุ:
    • $ curl https://mise.run | MISE_VERSION=v2024.5.16 sh
    • สามารถตรวจสอบเวอร์ชันที่ติดตั้งได้ด้วยคำสั่ง $ ~/.local/bin/mise --version
  • เชื่อม mise เข้ากับเชลล์:
    • bash: echo 'eval "$(~/.local/bin/mise activate bash)"' >> ~/.bashrc
    • zsh: echo 'eval "$(~/.local/bin/mise activate zsh)"' >> ~/.zshrc
    • fish: echo '~/.local/bin/mise activate fish | source' >> ~/.config/fish/config.fish
  • ติดตั้งรันไทม์และตั้งค่าเริ่มต้นแบบโกลบอล:
    • $ mise use --global node@20
    • สามารถตรวจสอบเวอร์ชันได้ด้วยคำสั่ง $ node -v

เอกสารทั้งหมด

  • ดูเอกสารทั้งหมดได้ที่ mise.jdx.dev

1 ความคิดเห็น

 
GN⁺ 2024-12-09
ความคิดเห็นจาก Hacker News
  • ตอนเริ่มใช้ mise รู้สึกพอใจเพราะมันแก้จุดอ่อนของ asdf ได้ พร้อมทั้งให้การตั้งค่าเชลล์ที่เร็วกว่าและรบกวนน้อยกว่า

    • เมื่อมีฟีเจอร์ Task Running และ Env Vars เพิ่มเข้ามา ก็ยิ่งมีประโยชน์มากขึ้น
    • ประทับใจที่ผู้พัฒนาใช้เวลามากในการสร้างฟีเจอร์สำหรับอนาคต โดยยังคงความเข้ากันได้กับเครื่องมือเดิม
    • ช่วงหลังมีฟีเจอร์ backend ที่ทำให้ติดตั้งเครื่องมือพัฒนาที่ต้องการได้ง่ายขึ้น จึงสะดวกมาก
  • เปลี่ยนมาใช้ Mise เพื่อจัดการ JS, Ruby, Python และ Java SDK แล้ว และพอใจมาก

    • รู้สึกสดใหม่ที่ไม่ต้องติดตั้ง RVM, NVM, เครื่องมือติดตั้ง Python ฯลฯ
  • กำลังใช้ mise เพื่อรวม toolchain ของทีมให้เป็นหนึ่งเดียว และไม่ได้ใช้ Docker หรือ Nix

    • ยังใช้ Docker สำหรับรันเซอร์วิสอยู่ แต่ประสบการณ์ใช้งานของ mise นั้นยอดเยี่ยม
    • มีการเพิ่มฟีเจอร์ autocomplete ให้กับสคริปต์ทั้งหมดในทุกรีโพ ทำให้สะดวกมาก
  • ถ้าพยายามทำทุกอย่าง ก็มีโอกาสสูงที่จะทำอะไรได้ไม่ดีสักอย่าง

    • คนส่วนใหญ่ไม่ได้เข้าใจปัญหาด้านแพ็กเกจจิงของ ecosystem ใด ecosystem หนึ่งอย่างลึกซึ้ง
    • นักพัฒนาจำเป็นต้องรู้หลายอย่าง แต่ในความเป็นจริงมันก็แค่ wrapper ของเครื่องมือเดิม
  • เพราะไม่ได้เป็นนักพัฒนา จึงไม่เข้าใจ use case ของเครื่องมือแบบนี้

    • ใช้ asdf เพื่อจัดการเวอร์ชันของทุกโปรแกรมใน monorepo โดย UX ไม่ค่อยดีแต่เชื่อถือได้
    • โหลดตัวแปรแวดล้อมที่จำเป็นและรันงานผ่านสคริปต์หรือ Makefile แทนการโหลดเข้าเชลล์เซสชันปัจจุบัน
    • ใช้ Make เพื่อรันคำสั่งเล็ก ๆ ที่ทำซ้ำได้ตามแต่ละไดเรกทอรี หรือรันคำสั่งแบบขนานหรือตามลำดับ
    • ใช้เชลล์สคริปต์เพื่อเขียนเครื่องมือที่ยาวหรือซับซ้อนกว่า Make target เล็กน้อย
    • สภาพแวดล้อมทั้งหมดจัดการได้ด้วยการติดตั้ง asdf เพียงอย่างเดียว และทุกอย่างเป็นอัตโนมัติพร้อมตรึงเวอร์ชันไว้
  • ใช้ mise เพื่อจัดการเวอร์ชัน Go อยู่ ซึ่งค่อนข้างสับสนและเอกสารยังไม่เพียงพอ แต่ก็ใช้ได้โอเค

    • ไม่เคยใช้ asdf หรือเครื่องมือคล้ายกันมาก่อน จึงอาจมีช่วงการเรียนรู้พอสมควร
  • ใช้ mise เป็นเครื่องมือแทน asdf และพอใจมาก

    • ให้ความสามารถเหมือนกัน แต่เร็วกว่าและ UX ดีกว่า
  • ใช้มานานกว่าหนึ่งปีแล้ว เป็นเครื่องมือง่าย ๆ ที่ทำให้ชีวิตสะดวกขึ้นมาก

    • ขอบคุณผู้สร้างและผู้มีส่วนร่วมทุกคน
  • กำลังคิดว่าจะรวม mise เข้ากับ GitHub Actions workflow อย่างไรดี

    • ถ้าดูไฟล์ workflow ในรีโพของ mise จะเหมือนแค่เพิ่มขั้นตอนของ mise เข้าไปไม่กี่ขั้น
    • ถ้ามันสร้างไฟล์ workflow ได้ก็น่าจะดียิ่งกว่าเดิม
  • หลังจากอ่าน Readme ของโปรเจกต์แล้ว ก็ยังมีคำถามค้างอยู่ในใจว่า "ทำไม?"

    • ใช้ Devbox เพื่อเข้าถึง ecosystem ของ Nix ทั้งหมด