25
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Voltaって結局何がすごいん!?

Last updated at Posted at 2022-10-31

きっかけ

Nodeのバージョン管理を選定するにあたり、Voltaについて調べたので、そのことをまとめておきます。

Voltaのここがすごい!

Voltaは以下の3点において優れています。
①速い
②堅実
③ユニバーサル

詳しくみていきましょう。

①速い

Volta は Rust 製であるため、他のバージョン管理ツールより動作が高速です。

②堅実

Voltaはバージョンを固定することができます。

package.jsonに記録されていて、共同開発者がgitからインストールするとその固定されたバージョンがインストールされ、プロジェクト単位での切り替えを自動で行なってくれます。

ただし、共同開発者がVoltaをインストールしている場合に限ります。

③ユニバーサル

Windows・Mac・Linux。どの OS でも作動します。

バージョンの固定って何??

①、③については説明は特に必要ないかと思うので、以下では②について詳しく掘り下げていきます。

volta pinコマンドを使用することで、各プロジェクトディレクトリ内でNodeとnpm(パッケージマネージャー)のバージョンを固定できます。

Nodeのバージョンを固定

Terminal
$ volta pin node@14.17

npmのバージョンを固定

Terminal
$ volta pin npm@6.14

そしてその切り替えを自動で行なってくれるのです。

グローバルvsローカル

ここでは、Voltaにおいてグローバルとローカル、どっちが優先されるのかについて話していきます。

Case1: Nodeの場合

結論から言うと、ローカルが優先されます。
基本的にはデフォルト(グローバル)のNodeのバージョンが使用されるのですが、プロジェクトディレクトリ内において、指定がある場合は、そちらが優先されます。

Case2: npmパッケージの場合

こちらも結論から言うと、ローカルが優先されます。

typescriptを例にして説明します。

TypeScript がグローバルインストールしてあったとします。
※npm や yarn でグローバルインストールしても Volta 管理下になる

Terminal
$ volta install typescript
or
$ npm install -g typescript
or
$ yarn global add typescript

$ tsc --version # 4.4.4

しかし、後々、とあるプロジェクトでは違うバージョンをローカルでインストールしていた場合、
そのプロジェクトに移動した際には、ローカルバージョンが自動的に使われます。

Terminal
$ cd /path/to/project-using-typescript-3.9.4
$ tsc --version # 3.9.4

ちなみに、グローバルインストールした npm パッケージは、インストール時のデフォルトバージョンである Node.js と関連付けられます。

npm パッケージを、グローバルバージョンとして使用する際は、この関連付けられた Node.js が使われるようになっているようです。

Terminal
$ volta list all
⚡️ User toolchain:
    .
    .
    .
    Packages:
        typescript@4.4.4 (default)
            binary tools: tsc, tsserver
            platform:
                runtime: node@16.13.0

それぞれのインストール方法

Voltaを使ってみたくなってきたでしょうか。
では、以下の3つのインストール方法について以下で解説します。

  • Voltaのインストール
  • Nodeのインストール
  • パッケージマネージャーのインストール

Voltaのインストール

それでは Volta をインストールしましょう。
手順は以下の2つです。

  • Nodeバージョン管理ツールの削除
  • Voltaのインストール

Nodeバージョン管理ツールの削除

Voltaをインストールする前に、現在使用中のNodeバージョン管理ツールを削除してください。

使用するツールによって削除方法が異なるので、各々使用しているツールに応じて調べてみてください。

Voltaのインストール

公式のドキュメントに従い、インストールを行います。
Mac・Linux(WSL 含む)であれば、以下のコマンドで簡単にインストール可能です。

以下のコマンドを実行しましょう。

Terminal
$ curl https://get.volta.sh | bash

bashとなっていますが、zsh・fish を使用されている方でも問題なくインストール可能です。
自動でパスも通してくれます。

Nodeのインストール方法

特定のバージョンをインストールする場合は以下のコマンドを実行します。

Terminal
$ volta install node@14.15.5

正確なバージョンを指定しなかった場合は、Volta はリクエストに一致する適切なバージョンを選択します。

Terminal
# 14系の安定版がインストールされる
$ volta install node@14

@latestで最新版をインストールできます。

Terminal
# 最新バージョンをインストールする
$ volta install node@latest

バージョンを完全に省略すると、Volta は最新の LTS リリースを選択しインストールします。

Terminal
# NodeのLTSリリースがインストールされる
$ volta install node

パッケージマネージャー(npm、yarn)のインストール

パッケージマネージャーのインストールを行う場合は、以下のコマンドを実行してください。

Terminal
volta install npm
Terminal
volta install yarn

インストールは、選択したノードのデフォルトバージョンを使用して実行されます。

Volta のコマンドについて

最後に、Voltaのコマンド一覧を置いておきます。(公式コマンドリファレンスはこちら

# 利用方法
volta [FLAGS] [SUBCOMMAND]
# FLAGS
    --verbose   # 詳細な診断を有効にします
    --quiet     # 不要な出力を防ぎます
-v, --version   # Voltaの現在のバージョンを表示します
-h, --help      # ヘルプ情報を表示します


# SUBCOMMANDS
fetch          # ローカルマシンにツールをフェッチ(取り込み)します
install        # ツールをツールチェーンにインストールします
uninstall      # ツールをツールチェーンからアンインストールします
pin            # プロジェクトのランタイムやパッケージマネージャーを固定します
list           # カレントツールチェーンを表示します
completions    # Voltaコンプリートを生成します
which          # Voltaが呼び出す実際のバイナリを特定します
setup          # 現在のユーザー/シェルに対してVoltaを有効にします
help           # メッセージまたは指定されたサブコマンドのヘルプを表示します

volta list

中でもよく使うコマンドであるvolta listについてご紹介します。

volta listは、Node ランタイム、パッケージマネージャーおよびバイナリを含むパッケージを検査し表示してくれるものです。
使い方はvolta list [FLAGS] [OPTIONS] [tool]です。

以下にvolta listコマンドの使い方をまとめます。

# 利用方法
volta list [FLAGS] [OPTIONS] [tool]

# Flags
-c, --current # 現在のアクティブなツールを表示します
              # このフラッグがデフォルトです
-d, --default # デフォルトツールを表示します
    --verbose # 詳細な診断を有効にします
    --quiet   # 不要な表示を防ぎます
-h, --help    # ヘルプ情報を表示します

# OPTIONS
--format <format>   # 出力形式を指定します
                    # 有効な値は `human` or `plain` です
                    # デフォルトは `human` で、それ以外の場合は `plain` です

# ARGS
<tool>  # リスト表示したいツールを指定します(node, npm, yarn またはその他のバイナリ)
        # 全て表示したい場合は `all` を指定します

この中でよく使うのは、シンプルなvolta list、volta list allです。

volta listは、そのプロジェクトで使用されるツールのバージョンを確認してくれます。
volta list allは、Volta で管理しているツールを一覧で見ることができます。

25
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?