Hexa's Blog

Quản lý version của ngôn ngữ theo dự án với ASDF

28/10/2020 Linux

Trong quá trình phát triển phần mềm, khả năng rất cao là mỗi dự án chúng ta sẽ cần đến một ngôn ngữ lập trình khác nhau, thêm vào mặc dù là chung ngôn ngữ nhưng phiên bản của ngôn ngữ lập trình thay đổi theo dự án. Việc quản trị ngôn ngữ lập trình và phiên bản của nó là cực kì quan trọng.

Phần mềm mà tôi thích sử dụng đó là asdf https://asdf-vm.com/ . Cách cài đặt thì có thể tìm thấy trực tiếp trên trang chủ của asdf. Bài viết này sẽ nói về những tính năng hay ho mà asdf tôi sử dụng hàng ngày.

Cơ chế hoạt động của asdf là tạo ra một lớp bọc phía bên ngoài cho các executable file , ứng với mỗi phiên bản, asdf sẽ chọn lựa và chạy file tương ứng. Việc quản lý version được làm tự động, lập trình viên chỉ việc config.

1. Cài đặt ngôn ngữ lập trình

ASDF cài đặt nhiều ngôn ngữ lập trình cũng như phiên bản của ngôn ngữ đó giúp bạn, cú pháp đơn giản, không cần config nhiều. Cần lưu ý là bạn phải cài plugin trước, Danh sách plugin có thể tìm ở đây https://asdf-vm.com/#/plugins-all.

Ví dụ như muốn cài elixir, thì bạn sẽ cần elixir-plugin.

  • Để cài đặt plugin, bạn sử dụng lệnh sau, trong đó elixir là tên plugin.
asdf plugin-add elixir
  • Để cài đặt ngôn ngữ, chạy lệnh sau, trong đó 1.9.1 là version.
asdf install elixir 1.9.1
[1] elixir 1.9.1
[1] elixir 1.9.1

2. Sử dụng bộ ngôn ngữ lập trình

Một dự án sẽ sử dụng rất nhiều ngôn ngữ lập trình, ví dụ như elixir cho backend, nodejs cho frontend, thêm vào đó trong trường hợp tôi dùng elixir tôi cần quan tâm đến cả erlang nữa. asdf sẽ giúp lập trình viên nhanh chóng chuyển phiên bản của ngôn ngữ lập trình theo dự án.

Ví dụ dưới đây là project_1project_2, hai dự án này nằm ở hai thư mục khác nhau. cả hai có điểm chung là đều sử dụng elixir tuy nhiên nhu cầu về phiên bản lại khác nhau, một cái là 1.9.1 , cái còn lại là 1.9.2

[2] project_1, elixir 1.9.1
[2] project_1, elixir 1.9.1
[3] project_2, elixir 1.9.2
[3] project_2, elixir 1.9.2

Tính năng này được để cập rất chi tiết tại đây https://asdf-vm.com/#/core-configuration.

Để làm được điều này, nói ngắn gọn bạn sẽ cần tạo file .tool-versions ở mỗi project. Trong file này sẽ liệt kê chi tiết version của language. Như trên hình, khi kiểm tra phiên bản của elixir, phiên bản đã hiển thị khác nhau.

File: project_1/.tool_versions

elixir 1.9.1
erlang 22.1
nodejs 10.16.3

File: project_2/.tool_versions

nodejs 13.0.1
erlang 22.1
elixir 1.9.2