0
0

More than 1 year has passed since last update.

【Node.js】Node.js を nodenv で管理する

Last updated at Posted at 2022-08-15

Node.jsとは

ブラウザ上で動作するJavaScriptを、サーバー上で動作させるためのソフトウェア

Node.jsをフロントエンド開発でも使っているのはなぜ?

  • npm でのパッケージ管理
  • パフォーマンス最適化のために、JavaScriptやCSSファイルを少数のファイルにまとめる(バンドル)
  • テストツールを用いてユニットテストやE2E テストを記述する

など、Node.jsの役割はいろいろある

npm

  • Node.jsのパッケージ管理システム(パッケージのインストールと整合性の管理をする)
  • 現在ではフロントエンドのパッケージ管理にも使用されるようになった

Node.jsのインストール

[推奨] Homebrew経由の anyenv 経由の nodenv 経由でNode.jsをインストールする

anyenv

  • 「**env」をまとめて管理してくれる

nodenv

  • プロジェクト毎のバージョン切り替えが楽になる(詳しくはこの後解説)

インストール手順

① Homebrewでanyenvをインストール

$ brew install anyenv                                 
$ echo 'eval "$(anyenv init -)"' >> ~/.zshrc
$ exec $SHELL -l          // シェルを再起動

※「>> ~/.zshrc」の部分は使用シェルによって適宜変更

② anyenvでnodenvをインストール

$ anyenv install -l            // anyenvでインストール可能な「**env」の一覧を表示
$ anyenv install nodenv
$ exec $SHELL -l               // シェルを再起動

③ nodenvでNode.jsをインストール

$ nodenv install -l       // nodenvでインストール可能なNode.jsのバージョンを表示
$ nodenv install 14.4.0   // バージョンを指定してインストール

使い方

デフォルトで使うバージョンを設定

$ nodenv global 14.4.0          // 先ほどインストールしたv14.4.0を使用
$ node -v
v14.4.0

プロジェクトで使うバージョンを設定

$ nodenv install 12.18.2          // 使用するバージョンをインストール
$ mkdir testdir                          
$ cd testdir                      // プロジェクトルートに移動
$ nodenv local 12.18.2            // バージョンを指定
$ node -v
v12.18.2
  • $ nodenv local バージョン を実行すると、プロジェクトルートに「.node-version」ファイルが作成され、そのプロジェクトで使用するバージョンが記載される
  • プロジェクトディレクトリにいる時は「.node-version」のバージョンが使用され、それ以外の時は $ nodenv global バージョン で設定したデフォルトのバージョンが使用される

Node.jsはバージョンによって挙動が異なる

  • 開発者各々のローカルのNode.jsのバージョンが違うと... 自分の環境では動くのにレビュワーの環境では動かない!
  • 本番環境のNode.jsとローカルのNode.jsのバージョンが違うと... ローカルでは動くのに、本番ではエラーが発生!

nodenvなら「.node-version」ファイルをGitで共有すれば、これらの問題を防げる:innocent:
複数の案件を掛け持ちしている時も、プロジェクト毎にNode.jsのバージョンを切り替える必要がない:innocent: :innocent:

※上記は各々のローカルでNode.jsを動かす場合のみ考慮が必要(Dockerのコンテナ内でNode.jsを動かすプロジェクトでは気にしなくて良い)

0
0
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
0
0