やりたいこと
いままで Node.js のバージョン管理には n を使っていたのですが毎回使い方を忘れてしまう...。そこで似たようなツールがないか調べていたときに asdf を見つけました。試しに使ってみたところ使い勝手が良く、他の言語(Go、Ruby、Python など。もっと沢山あります)もカバーしていることもあり、副次的に rbenv
, pyenv
なども使わなくて良くなりそうなので乗り換えることにしました。
本記事では Node.js をインストールした手順のみ残しておきます。
前提環境
実施した環境ということでご参考までに。Linux Mint は Ubuntu 互換のディストリビューションです。
カテゴリ | ソフトウェア | バージョン |
---|---|---|
OS | Linux Mint | 19 Tara Cinnamon x64 (Ubuntu 18.04 LTS ベース) |
やってみた
1. asdf をインストール
公式の手順を見ながら進めます。git clone
するときにブランチを指定していますが削除します。指定しなければ最新が入ります。
git clone https://github.com/asdf-vm/asdf.git ~/.asdf # ブランチを指定しなければ最新が入ります
bash
で asdf
を使う場合
echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.bashrc
echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.bashrc
asdf
コマンドを実行してインストールされたかを確認。
asdf -v
version: v0.7.0
fish
で asdf
を使う場合
私は fish を使っているのでこちらを実行。
echo 'source ~/.asdf/asdf.fish' >> ~/.config/fish/config.fish
mkdir -p ~/.config/fish/completions; and cp ~/.asdf/completions/asdf.fish ~/.config/fish/completions
・・・ただ、bash
から のコマンドを実行する必要があったので
bash
で下記を実行しました。
# fish で asdf を使う。
echo 'source ~/.asdf/asdf.fish' >> ~/.config/fish/config.fish
mkdir -p ~/.config/fish/completions
cp ~/.asdf/completions/asdf.fish ~/.config/fish/completions
asdf
コマンドを実行してインストールされたかを確認。
asdf -v
version: v0.7.0
うまく動かないときはターミナルを再起動してください。
2. asdf のプラグインと依存関係があるパッケージをインストール
公式の Plugin Dependencies でプラグインの依存関係としてインストールしておいた方が良いパッケージが案内されているため追加でインストールします。公式は apt
コマンドですが apt-get
に変えています。
sudo apt-get install -y \
automake autoconf libreadline-dev \
libncurses-dev libssl-dev libyaml-dev \
libxslt-dev libffi-dev libtool unixodbc-dev
3. asdf で Node.js をインストール
Node.js のバージョンは推奨版(LTS)をインストールします。現在のバージョンが何かは公式のページで確認します。
バージョンが確認できたら Node.js をインストールします。
※ asdf plugin-add nodejs
だけだとインストールするときのコマンド(asdf install nodejs 10.15.2
)でエラーになります。調べてみたところ、asdf-nodejs に記載されている手順でインストールする必要があります。Ruby や Python では必要なかったんですけどね...。
# apt の Node.js はアンインストール
sudo apt-get remove -y nodejs
# asdf-nodejs で案内されているパッケージを追加
sudo apt-get install -y gpg dirmngr
# Node.js をインストールできるように asdf のプラグインを追加(asdf-nodejs.git から引っ張ってくる)
asdf plugin-add nodejs https://github.com/asdf-vm/asdf-nodejs.git
bash $HOME/.asdf/plugins/nodejs/bin/import-release-team-keyring
# asdf でバージョンを指定して Node.js をインストール
asdf install nodejs 10.15.2
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 3884 0 3884 0 0 3606 0 --:--:-- 0:00:01 --:--:-- 3606
gpg: 2019年02月28日 21時43分40秒 JSTに施された署名
gpg: RSA鍵DD8F2338BAE7501E3DD5AC78C273792F7D83545Dを使用
gpg: "Rod Vagg <rod@vagg.org>"からの正しい署名 [不明の]
gpg: 別名"Rod Vagg <r@va.gg>" [不明の]
gpg: *警告*: この鍵は信用できる署名で証明されていません!
gpg: この署名が所有者のものかどうかの検証手段がありません。
主鍵フィンガープリント: DD8F 2338 BAE7 501E 3DD5 AC78 C273 792F 7D83 545D
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 17.7M 100 17.7M 0 0 3226k 0 0:00:05 0:00:05 --:--:-- 4436k
node-v10.15.2-linux-x64.tar.gz: OK
インストールしたバージョンにパスを通して使えるようにします。
asdf global nodejs 10.15.2
asdf reshim nodejs
インストールされたのか確認。
node -v
v10.15.2
npm
コマンドも使えるようになっているか確認。
npm-v
6.4.1
おまけ
yarn をインストールしたいとき
通常通り npm
コマンドでグローバルにインストールできます。
npm i -g yarn
yarn
コマンドが使えるようになっているか確認。
yarn -v
1.13.0
ただし、asdf
で別のバージョンの Node.js をインストールした場合はインストールし直しになります。
例: 10.15.2
の yarn
と 10.15.3
の yarn
は別々にインストールする必要があります。
asdf のバージョンを上げたいとき
asdf update
asdf で Node.js のバージョンを上げたいとき
インストール可能なバージョンの一覧を確認します。
asdf list-all nodejs
0.10.0
0.10.1
0.10.2
0.10.3
0.10.4
0.10.5
0.10.6
0.10.7
==================== 中略 ====================
10.15.2
10.15.3
11.0.0
11.1.0
11.2.0
11.3.0
11.4.0
11.5.0
11.6.0
11.7.0
11.8.0
11.9.0
11.10.0
11.10.1
11.11.0
いま見ると 10.15.3
リリースされてますね。アップデート早いなぁ ← Release スケジュール 見てない...
# 指定されたバージョンをインストール
asdf install nodejs 11.11.0
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 4229 0 4229 0 0 4532 0 --:--:-- --:--:-- --:--:-- 4527
gpg: 2019年03月07日 04時30分52秒 JSTに施された署名
gpg: RSA鍵A48C2BEE680E841632CD4E44F07496B3EB3C1762を使用
gpg: "Ruben Bridgewater <ruben@bridgewater.de>"からの正しい署名 [不明の]
gpg: *警告*: この鍵は信用できる署名で証明されていません!
gpg: この署名が所有者のものかどうかの検証手段がありません。
主鍵フィンガープリント: A48C 2BEE 680E 8416 32CD 4E44 F074 96B3 EB3C 1762
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 19.4M 100 19.4M 0 0 3902k 0 0:00:05 0:00:05 --:--:-- 4741k
node-v11.11.0-linux-x64.tar.gz: OK
# 指定のバージョンが使えるようにパスを通す
asdf global nodejs 11.11.0
asdf reshim nodejs
node -v
v11.11.0
所感
- 開発言語のバージョン管理をするのであれば
asdf
は鉄板という印象。 - 複数言語を使う人には尚オススメ。
- というよりも、バージョン管理をしなくても
asdf
を入り口にインストールする方が分かりやすいのではないか