MENU

サーバーサイドローカル環境JavaScript

【Node.js】 Windowsで複数のバージョンを管理する方法

更新日:2021/05/27

 

なぜ既存ツールを使用しないのか

 

Windowsに複数のバージョンのNode.jsをインストールして管理したい場合、nodistやnvm-windowsなどのツールを利用できます。

 

しかし、どのような仕組みでバージョン切り替えを行っているのか不明な点が多く、例えば他のツールとNode.jsを連携したいときなど、とても苦労することが予想されます。

 

だったら、自分で仕組みを作った方が応用が効くというものです。

 

やってみたら、あっさりとできました。

 

わざわざツールを入れるほどのものではないです。

バージョン管理の仕組みをつくる

 

では仕組みを作ってみます。

 

やっていることは、各バージョンをインストーラーを使用しないでフォルダに展開し、バッチファイルでパスを切り替えるだけです。

 

 

Windowsバイナリ―をダウンロード

 

まずは、Node.jsをダウンロードします。

 

LTS(推奨版)および最新版は、下のリンク先を開いてください。

 

 

Windows Binary (.zip)の32ビット版または64ビット版をクリックして、ダウンロードします。

 

けーちゃん

 

その他のバージョンは、次のリンクからダウンロードします。

 

リリース一覧(過去のNode.js)

 

各バージョンのリンク先がファイル一覧になっています。
この中から、node-vXX.XX.X-win-x64.zip または、node-vXX.XX.X-win-x86.zip をクリックして、ダウンロードします。
なお、XX.XX.Xはバージョン名、x64は64ビット版、x86は32ビット版です。

 

フォルダに解凍

 

ダウンロードしたzipファイル毎にフォルダを作成し、その中にzipファイルを展開します。

 

場所は自分の好みで問題ありません。

 

今回は、C:\Program Filesにnodeという名前のフォルダを作成して、その中に各バージョンのフォルダを作成しました。

 


C:\Program Files\node
     ┣ v14_17_0 ← node-v14.17.0-win-x64.zip を解凍
     ┣ v16_2_0 ← node-v16.2.0-win-x64.zip を解凍

 

バージョンの区切りが _ になっていますが、 . (ドット)でも大丈夫です。たぶん。
僕はMSDOSのころからパソコンを使用してきているためか、windowsで. (ドット)が複数並ぶと奇妙に感じてしまうのです。Linuxとかは別に抵抗がないのですが…

 

グローバルインストールパスの調整

 

インストーラーを使用使用してNode.jsをインストールした場合、npmのグローバルインストール先として 環境変数APPDATA\npm がセットされます。
(通常環境変数APPDATAは、c:\Users\ユーザー名\AppData\Roaming\)
この設定により、Windowsアカウント毎にグローバルインストール先を切り替えるようになっています。

 

しかしzipを展開してインストールした場合は、展開したフォルダ\node_modules となります。これは、全てのWindowsアカウントで同じフォルダを使用します。

 

インストーラーと同じように、Windowsアカウント毎にグローバルインストール先を切り替えたいときは、次のような手順をおこないます。

 

  1. 展開したフォルダ内のnode_modules\npmにnpmrcという名前のファイルを作成する

    ( .npmrc というファイルがあるので、間違えないように注意)

  2. npmrcに、prefix=${APPDATA}\npm\バージョン名 を入力して保存する

 

prefix=${APPDATA}\npm\v14_17_0

 

 

バッチファイルの作成

 

次は、各バージョンの設定をおこないコマンドプロンプトを起動するバッチファイルを作成します。

 

今回は次のように構成で、v14_17_0のNode.jsに切り替える node14_17_0.bat と、v16_2_0のNode.jsに切り替える node16_2_0.bat を作成してみます。

 


C:\Program Files\node
     ┣ v14_17_0 <フォルダ>
     ┣ v16_2_0 <フォルダ>
     ┣ node14_17_0.bat
     ┗ node16_2_0.bat

 

node14_17_0.bat

@echo off
set PATH=C:\Program Files\node\v14_17_0;%PATH%;
node -v
cmd /k

 

node16_2_0.bat

@echo off
set PATH=C:\Program Files\node\v16_2_0;%PATH%;
node -v
cmd /k

 

@echo off は、以降のコマンドで出力されるメッセージを抑制し、実行結果のみ表示します。

 

2行目は、元からある環境変数PATHの前に、Node.jsへのパスを追加しています。
グローバルインストールしたパッケージをCLIで実行する必要があるときは、グローバルインストール先のパスも%PATH%の前に追加しておきます。
ここで追加したPATHは、このコマンドプロンプト内でのみ有効です。

 

3行目は、Node.jsのバージョンを出力しています。

 

4行目は、cmd /k でコマンドプロンプトを起動したままバッチを終了しています。

 

重要なのは、2行目と4行目です。
他は、削ってしまっても大丈夫です。

 

このバッチファイルのショートカットアイコンを作成して、デスクトップなどに貼り付けておくと簡単に各バージョンに対応したNode.jsを起動することができます。

 

ショートカットアイコンをダブルクリック

 

さらに今回は、Windowsの環境変数設定でC:\Program Files\nodeにパスを通しておきます。

 

環境変数の設定方法はこちらに記事を読んでみてください。
Windows10でPathなどの環境変数を設定する

 

こうしておくと、コマンドプロンプト上で各バッチファイルを実行できます。

 

コマンドプロンプト


C:\Users\aaa>node14_17_0 ← バッチの起動
v14.17.0          

C:\Users\aaa>node test.js  ← スクリプトの実行

 

 

グローバルインストールパスの設定

 

パッケージをグローバルインストールして使用する場合、環境変数NODE_PATHをバッチファイルに追加する必要があります。

 

まずは、グローバルインストールのパスを確認します。

 

これまで作成してきたバッチファイルで、コマンドプロンプトを起動したあと、npm root -g を実行します。

 

コマンドプロンプト


C:\Users\aaa>node14_17_0 ← バッチの起動
v14.17.0          

C:\Users\aaa>npm root -g
C:\Users\aaaa\AppData\Roaming\npm\v14_17_0\node_modules
             ↑ グローバルインストールのパス

 

バッチファイルに、環境変数NODE_PATHの設定を追加します。

 

node14_17_0.bat

@echo off
set PATH=%PATH%;C:\Program Files\node\v14_17_0;
set NODE_PATH=C:\Users\aaaa\AppData\Roaming\npm\v14_17_0\node_modules
node -v
cmd /k

 

3行目が、NODE_PATHの設定です。

 

バッチを書き換えたら、グローバルインストールパスが適用されているか確認します。

 

コマンドプロンプト


C:\Users\aaa>node14_17_0 ← バッチの起動
v14.17.0          

C:\Users\aaaa>node ← node.exeを実行
Welcome to Node.js v14.17.0.
Type ".help" for more information.
> module.paths ← 検索パスを表示
[
  'C:\\Users\\aaaa\\node_modules',
  'C:\\Users\\node_modules',
  'C:\\node_modules',
  'C:\\Users\\aaaa\\AppData\\Roaming\\npm\\v14_17_0\\node_modules', ←追加されている
  'C:\\Users\\aaaa\\.node_modules',
  'C:\\Users\\aaaa\\.node_libraries',
  'C:\\Program Files\\node\\node14_17_0\\lib\\node'
]
>

 

module.pathsに、グローバルインストールパスがあれば適用されています。

インストーラーでインストール済みの場合

 

既にインストーラーでNode.jsをインストールしてある場合は、バッチファイルを使用しないでNode.jsを起動すると、既存のバージョンが有効になります。

 

他のツールと連携しているときなどは、そのまま使用できます。

けーちゃんおススメJavaScript入門書

  • スラスラ読める JavaScript ふりがなプログラミング
  • プログラム未経験者がJavaScript始めるならコレ!
    コードを掲載して自分で理解しろという投げっぱなしな入門書とは異なり、コードに一つ一つどんなことをやっているかをふりがなという形式で解説しています。
    それでいてJavaScriptの基礎と応用を学べる良書です。
  • これからWebをはじめる人のHTML&CSS、JavaScriptのきほんのきほん
  • JavaScriptの機能を実践で活かすにはHTMLやCSSの知識が不可欠です。
    しかしそれらの知識があることが前提として書かれている書籍が多い中、この本は総合的な知識を身に着けることができます。
    HTMLやCSSの知識も不安な方には、ぴったりの一冊です
  •  

    入門書の役割は、自分のやりたいことをネットで調べることができるようになるための、基礎的な知識の獲得です。
    まずはこれらの本でしっかりと基礎知識を身につけましょう。
    そしてもっと高度なことや専門的なことはネットで調べ、情報が足りないと感じたら書籍を購入してください。


    期間限定情報:
    6/21と6/22は年に一度のプライム会員大感謝祭!
    欲しかったアレが安く手に入るチャンスです
    忘れずにチェックしてください!
    僕は以前のタイムセール祭りで4Kモニタが買ったけど、それより安かったらどうしよう・・・

    ちなみにプライム会員でなくても、無料体験で参加できるようです。
    欲しい商品があるか、確認だけでもしておきましょう。

    記事の内容について

     

    こんにちはけーちゃんです。
    説明するのって難しいですね。


    「なんか言ってることおかしくない?」
    たぶん、こんなご意見あると思います。

    裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。

    そんなときは、ご意見もらえたら嬉しいです。

    ご意見はこちら。
    https://note.affi-sapo-sv.com/info.php

    【お願い】

    お願い

    ■このページのURL


    ■このページのタイトル


    ■リンクタグ


    ※リンクして頂いた方でご希望者には貴サイトの紹介記事を作成してリンクを設置します。
    サイト上部の問い合わせよりご連絡ください。
    ただしサイトのジャンルによっては、お断りさせていただくことがあります。