使用 asdf 工具有效管理 Elixir、Erlang、Python 和 Node.js 等多種程式語言的版本

使用 asdf 工具有效管理 Elixir、Erlang、Python 和 Node.js 等多種程式語言的版本

目錄

在軟體開發領域中,維持團隊成員工具版本的一致性是非常關鍵的。這正是 asdf 版本管理工具發揮作用的時刻。 asdf 讓你能在一個文件( .tool-versions )裡面指定所有工具的版本,並且將該文件加入到 Git 倉庫中與團隊共享,這樣就能保證每個人都在使用相同版本的工具。

asdf 出現之前,開發者往往需要依賴多個不同的命令行界面(CLI)版本管理器,這些管理器各自擁有不同的 API、配置方式和實作細節(例如:路徑( $PATH )的設定、shims 或環境變量的處理)。 asdf 提供了一個統一的操作界面和配置文件,顯著簡化了開發過程。此外, asdf 還支援通過插件擴展,使其能夠支援廣泛的工具和執行環境。

asdf 的核心理念是將所有工具的版本控制集中在一個地方管理。它透過 .tool-versions 文件來設定各工具的版本,並能夠自動切換到指定的版本。這意味著你可以在不同的專案中使用不同版本的工具,而無需在全局範圍內進行版本切換。

由於 asdf 擁有一個非常活躍的社群,它支援了眾多的工具,包括但不限於 Elixir、Erlang、Python、Node.js、Ruby、Rust、Go、Java 等。這讓 asdf 成為一個極具吸引力的選擇,尤其適合那些需要跨多種程式語言進行開發的開發者。

安裝 asdf

目前 asdf 僅支援 Linux 和 macOS。你可以通過以下命令安裝 asdf

curl -L -o source.tar.gz "$(curl -s https://api.github.com/repos/asdf-vm/asdf/releases/latest | jq -r '.tarball_url')"
tar -xzf source.tar.gz -C ~/.asdf --strip-components=1
rm source.tar.gz
echo '. "~/.asdf/asdf.sh"' >> ~/.bashrc
echo '. "~/.asdf/completions/asdf.bash"' >> ~/.bashrc
source ~/.bashrc
asdf --version

安裝插件

  • 安裝 Node.js
asdf plugin add nodejs
ubuntu_version=$(lsb_release -rs)
if [ $(echo "$ubuntu_version < 20" | bc -l) -eq 1 ]; then
    # 因為 Node.js 18 版後依賴於 GLIBC_2.28,但 Ubuntu 從 20 版後才支援 GLIBC_2.28
    # Node.js 通常偶數為穩定 LTS 版本,故安裝 16 版的最後版本
    export NODEJS_VERSION="16.20.2"
else
    export NODEJS_VERSION="20.10.0"
fi
echo "NODEJS_VERSION is set to $NODEJS_VERSION"
asdf install nodejs $NODEJS_VERSION
asdf global nodejs $NODEJS_VERSION
node --version
npm --version
  • 安裝 Python
asdf plugin add python
export PYTHON_VERSION="3.10.12"
asdf install python $PYTHON_VERSION
asdf global python $PYTHON_VERSION
python --version
comments powered by Disqus

相關文章

使用 OpenSSH 替沒有固定 IP 的本地主機 (WSL2) 建立反向 TCP 遠端通道 (Ngrok 免費替代)

使用 OpenSSH 替沒有固定 IP 的本地主機 (WSL2) 建立反向 TCP 遠端通道 (Ngrok 免費替代)

若我們希望將本地主機的服務,例如 ssh 伺服器供外部連線,但我們又沒有固定 IP 時,我們可以使用 OpenSSH 建立反向 TCP 遠端通道,讓外部主機可以透過這個通道連線到

閱讀更多
如何調整 Linux 系統時區

如何調整 Linux 系統時區

在 Debian/Ubuntu 上調整時區 檢查目前的時區設定 timedatectl 列出所有可用的時區 timedatectl list-timezones 設定時區 sudo timedatectl set-timezone Asia/Taipei sudo dpkg-reconfigure --frontend noninteractive tzdata 在 Docker 容器中調整時區 export TZ=Asia/Taipei ln -snf /usr/share/zoneinfo/$TZ /etc/localtime echo $TZ > /etc/timezone DEBIAN_FRONTEND="noninteractive" apt-get install -y tzdata

閱讀更多
Raymii VS9 螢幕支架:完美的居家工作夥伴?

Raymii VS9 螢幕支架:完美的居家工作夥伴?

今天我要介紹的是一款來自台灣品牌 Raymii 的 VS9 螢幕支架。在這個居家工作成為新常態的時代,擁有一款好的螢幕支架不僅可以提高工作效率,還能確保我們的坐姿

閱讀更多