3 điểm bởi GN⁺ 2024-12-09 | 1 bình luận | Chia sẻ qua WhatsApp

mise là gì?

  • mise là công cụ quản lý nhiều công cụ phát triển như node, python, cmake, terraform, tương tự asdf, nvm, pyenv
  • Tương tự direnv, công cụ này quản lý biến môi trường theo từng thư mục dự án
  • Tương tự make, công cụ này quản lý các tác vụ dùng cho việc build và test dự án

Demo 30 giây

  • Trình bày cách dùng mise để cài đặt nhiều phiên bản khác nhau của node
  • Khi chạy lệnh which node, đường dẫn thực tế sẽ được trả về, không phải shim

Bắt đầu nhanh

  • Cách cài đặt mise:
    • $ curl https://mise.run | sh
    • Có thể kiểm tra phiên bản đã cài bằng lệnh $ ~/.local/bin/mise --version
  • Cài đặt một phiên bản cụ thể:
    • $ curl https://mise.run | MISE_VERSION=v2024.5.16 sh
    • Có thể kiểm tra phiên bản đã cài bằng lệnh $ ~/.local/bin/mise --version
  • Kết nối mise với shell:
    • 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
  • Cài runtime và thiết lập mặc định toàn cục:
    • $ mise use --global node@20
    • Có thể kiểm tra phiên bản bằng lệnh $ node -v

Tài liệu đầy đủ

  • Có thể xem tài liệu đầy đủ tại mise.jdx.dev

1 bình luận

 
GN⁺ 2024-12-09
Ý kiến trên Hacker News
  • Khi bắt đầu dùng mise, tôi khá hài lòng vì nó khắc phục được nhược điểm của asdf, đồng thời cung cấp cấu hình shell nhanh hơn và ít xâm lấn hơn

    • Việc bổ sung tính năng chạy tác vụ và biến môi trường khiến nó càng hữu ích hơn
    • Tôi ấn tượng với việc tác giả đã đầu tư rất nhiều thời gian để xây dựng các tính năng tương lai mà vẫn duy trì khả năng tương thích với các công cụ hiện có
    • Gần đây, nhờ tính năng backend, việc cài đặt các công cụ phát triển cần thiết đã trở nên rất thuận tiện
  • Tôi đã chuyển sang Mise để quản lý JS, Ruby, Python và Java SDK, và cảm thấy hài lòng

    • Không còn phải cài riêng RVM, NVM hay các công cụ cài đặt Python nữa, điều này mang lại cảm giác khá mới mẻ
  • Tôi đang dùng mise để hợp nhất chuỗi công cụ của nhóm và không dùng Docker hay Nix cho việc đó

    • Docker vẫn được dùng để chạy dịch vụ, nhưng trải nghiệm người dùng của mise rất xuất sắc
    • Việc có tự động hoàn thành cho mọi script trong kho lưu trữ rất tiện lợi
  • Khi cố làm mọi thứ, rất dễ dẫn đến việc không làm tốt được thứ gì cả

    • Phần lớn mọi người không thực sự hiểu sâu các vấn đề đóng gói trong một hệ sinh thái
    • Các nhà phát triển phải biết rất nhiều thứ, nhưng trên thực tế nó chỉ là lớp bọc quanh các công cụ hiện có
  • Vì tôi không phải là lập trình viên nên tôi không hiểu các trường hợp sử dụng của những công cụ này

    • Tôi dùng asdf để quản lý mọi phiên bản chương trình trong monorepo; UX không tốt lắm nhưng đáng tin cậy
    • Tôi không nạp biến môi trường vào phiên shell hiện tại mà dùng script hoặc Makefile để nạp các biến cần thiết và thực hiện công việc
    • Tôi dùng Make để chạy các lệnh nhỏ có thể lặp lại theo từng thư mục, hoặc để chạy song song hay tuần tự các lệnh
    • Tôi dùng shell script để viết các công cụ dài hơn hoặc phức tạp hơn một chút so với target của Make
    • Toàn bộ môi trường có thể được quản lý chỉ bằng cách cài asdf; mọi thứ đều được tự động hóa và khóa phiên bản
  • Tôi dùng mise để quản lý phiên bản Go; hơi khó hiểu và tài liệu chưa đầy đủ, nhưng nhìn chung vẫn ổn

    • Tôi chưa từng dùng asdf hay công cụ tương tự, nên có thể sẽ có một đường cong học tập nhất định
  • Tôi dùng mise như công cụ thay thế asdf và cảm thấy hài lòng

    • Nó cung cấp cùng chức năng nhưng nhanh hơn và UX tốt hơn
  • Đây là một công cụ đơn giản mà tôi đã dùng hơn một năm và nó giúp cuộc sống dễ dàng hơn

    • Cảm ơn tác giả và những người đóng góp
  • Tôi đang suy nghĩ về cách tích hợp mise vào workflow của GitHub Actions

    • Nhìn vào các file workflow trong kho chứa của mise, có vẻ chỉ cần thêm vài bước mise
    • Sẽ còn tốt hơn nếu nó có thể tạo file workflow
  • Sau khi đọc README của dự án, tôi vẫn còn câu hỏi: "Tại sao?"

    • Tôi dùng Devbox để truy cập toàn bộ hệ sinh thái Nix