注意
2018/09/20 現在、 nodist で npm をインストールした環境で次のコマンドを実行し、 npm のアップデートを行うとエラーが発生します。
$ nodist npm match
エラーが発生する原因や対応については下記をご参照ください。
nodist を使った npm のアップデート
上記で挙げた $ nodist npm match
は Node.js と npm のバージョンを対応させてくれるコマンドですが、これを使わずに npm のバージョンアップを行うこともできます。
その場合、後述の Node.js の導入 (nodist を介して) に記載の「6.npm のアップデートも行っておく」で示した方法で実現できますが、この方法だと Node.js と npm のバージョンを自動で対応させてくれません。
両者のバージョンを合わせたい場合は下記の一覧をもとにバージョンを指定してコマンドを実行してください。
更新情報(2020年12月31日)
以下のバージョンで動作確認したので、それにあわせて記事を修正しました。
確認環境
環境 | バージョン | 備考 |
---|---|---|
Windows10 Home 64bit | Version 1909 用の 4.8 | |
nodist |
|
|
Node.js |
|
|
npm |
|
|
Git |
|
更新情報(2019年7月8日)
2019/07/08 現在、 nodist は v0.9.1
が最新です。
後述の nodist の導入 でもリンクを貼っておりますが、こちら から最新版のダウンロードができます。
なお v0.9.1
での動作確認を行なっておりませんので、本記事では本項目での「更新情報」としての紹介に留めさせていただきます。
本記事における以下の内容の動作確認環境は 確認環境 でも記しましたとおり、あくまで v0.8.8
となります。ご承知おきください。
Node.js
フロントエンド、バックエンド問わず、最近の JavaScript を使用した開発では Node.js の導入がデファクトとなっている。
Node.js を導入することで npm が利用できるようになり、 npm を利用することで Node.js で提供される JavaScript フレームワークやライブラリの導入が容易となる。
nodist
nodist は Node.js のバージョンを管理するツール。
これを入れることでバージョン単位で Node.js を導入することができ、状況に応じてバージョンを切り替えることができる。
バージョンを切り替えることができるメリット
npm パッケージは Node.js のバージョンに依存することが多い。
あるバージョンでは動いていたパッケージがあるバージョンでは動かない、ということがある。
このケースにおいて、 Node.js のバージョンを、 Node.js をインストールし直すことなく切り替えることができることは大きなメリットである。
nodist の導入
公式ページからインストーラをダウンロード
-
公式ページ(GitHub)
https://github.com/marcelklehr/nodist
nodist のインストール
-
インストーラに従ってインストール
-
バージョン確認
$ nodist --version 0.9.1
Node.js の導入 (nodist を介して)
-
インストール可能な Node.js のバージョンを確認
$ nodist dist 0.1.14 0.1.15 ~中略~ 14.15.3 15.0.0 15.0.1 15.1.0 15.2.0 15.2.1 15.3.0 15.4.0 15.5.0
-
任意のバージョンをインストール
ここでは 2020年12月現在の LTS である
v14.15.3
を選択した。$ nodist + v14.15.3 14.15.3 [===============] # ここの KiB はバイナリによる 14.15.3
-
インストールされている Node.js を確認
$ nodist (x64) 10.11.0 > 11.13.0 (global: v11.13.0) 14.15.3
-
Node.js のバージョンを切り替える
$ nodist v14.15.3 v14.15.3 v14.15.3 (global)
-
現在利用対象となっている Node.js を確認
$ nodist (x64) 10.11.0 11.13.0 > 14.15.3 (global: v14.15.3) $ $ node --version v14.15.3
npm のマッチング
-
現在のバージョンを確認
$ npm --version 6.4.1
-
nodist から Node.js と npm のマッチングを行う
リリース一覧 を見ると
Node.js v14.15.3
にマッチングするのはnpm v6.14.9
)$ nodist npm match npm match https://codeload.github.com/npm/cli/tar.gz/v6.14.9 [============== ] # ここの KiB はバイナリによる
-
インストールした npm のバージョンに切り替える
$ nodist npm 6.14.9 npm 6.14.9
-
現在利用対象となっている Node.js を確認
$ npm --version 6.14.9
npm を単体でアップデートしたい場合
-
現在のバージョンを確認
$ npm --version 4.0.5
-
アップデート
最新版にする場合$ npm install npm -g
バージョンを指定する場合$ npm install npm@5.6.0 -g
-
再度バージョンを確認
$ npm --version 5.6.0
npm をアップデートしたときの挙動に関する備忘録
-
通常のコマンドプロンプトと Git Bash とで挙動が異なる
- [A] 通常のコマンドプロンプトの実行結果
- アップデート処理終了後の
npm -v
の結果は4.0.5
のままだった
- アップデート処理終了後の
- [B] 確認環境 に示した
Git Bash
の実行結果- アップデート処理終了後の
npm -v
の結果は更新したバージョン( 今回は5.6.0
) となった
- アップデート処理終了後の
- [A] 通常のコマンドプロンプトの実行結果
-
npmv
フォルダを削除したときの挙動が異なる
通常のコマンドプロンプトでは nodist のインストール先にあるnpmv
( デフォルトだと C:\Program Files (x86)\Nodist\npmv )を参照しているようで、このフォルダを削除したときのnpm -v
は以下の結果となった。
-
[A]のケースでは
$ npm --version Sorry, there's a problem with nodist. Couldn't resolve npm version spec 4.0.5 : open C:\Program Files (x86)\Nodist/npmv: The system cannot find the file specified.
-
[B] のケースでは
$ npm --version 5.6.0
プロキシの設定(2017/08/28 追記)
nodist dist
を実行した際に次のエラーが出るケースがある。
$ nodist dist
Could not read response for https://nodejs.org/dist/index.json
Could not read response for https://iojs.org/dist/index.json
Could not read response for https://nodejs.org/dist/index.json.
Sorry.
ネットワークに繋がっているにもかかわらずこういったエラーがでるのは、プロキシが通っていないケースが多い。
次のコマンドを実行してプロンプト上でプロキシを設定してやる。
$ set HTTP_PROXY=http://proxy.server.co.jp:8080
# ホスト名の proxy.server.co.jp は自分の環境にあわせて編集
# ポート番号の 8080 も自分の環境にあわせて編集
なお上記の設定は、実行しているコマンドプロンプト上でのみ有効な一時的な設定なので留意しておくこと。
Use the `--scripts-prepend-node-path`
の対応
npm 実行時に
npm WARN lifecycle The node binary used for scripts is
C:\Program Files (x86)\Nodist\bin\node.exe but npm is using C:\Program Files (x86)\Nodist\v-x64\9.4.0\node.exe itself.
Use the `--scripts-prepend-node-path` option to include the path for the node binary npm was executed with.
上記 WARN
が発生したら( 改行は筆者が行っている )
$ npm config set scripts-prepend-node-path true
してやれば良い。
終わり
ここまでの手順で Node.js とそれに付随して npm を利用する環境が構築できた。
あとは npm を使ってフロントエンドなりバックエンドなりの開発環境を整えれば良い。