PowerShell v2 で動くNode.jsのバージョンマネージャを作った
これは PowerShell Advent Calendar 2018の21日目の記事です。
nvmp
clomie/nvmp: Node.js Version Manager running on Powershell v2
https://github.com/clomie/nvmp
Windows向けのPowerShell製Node.jsバージョンマネージャです。
特徴としては、
- PowerShell v2 で動く
- 管理者権限を必要としない
- インターネットオプションに設定されたProxy設定を使って動作する
つまり、
- 使っているPCがWindows7
-
$PSVersionTable
を確認したら2.0だった - アカウントに管理者権限がないのでPowerShellエンジンをアップデートできない
という状況でも使えます。
インストール方法
READMEにある通りです。もちろんgit clone
ではなく、zipをダウンロードして解凍してもOKです。
install.ps1
を実行するとnvmp.cmd
へのPATHが通って使えるようになります。
PS C:/git/nvmp> . .\install.ps1
使い方
インストールさえしてしまえば、コマンドプロンプトでも動きます。
コマンド一覧
その他のコマンドについてはヘルプを見てください。
> nvmp help
Node Version Manager by Powershell
Usage:
nvmp help : Show this message
nvmp install <version> [arch] : Download and install the specified version of node.js.
Optionally specify whether to install the "x86" or "x64" version (defaults to system arch).
nvmp uninstall <version> [arch] : Uninstall the specified version of node.js
nvmp use <version> [arch] : Switch to use the specified version. Optionally specify x86/x64 architecture.
nvmp current : Show current in-use version of node.js
nvmp ls : List the node.js installations.
nvmp ls-remote : List the installable versions
Example:
nvmp install v10.9.0 : Install a specific version number of node.js
nvmp install v10.9.0 x86 : Install a 32-bit version
nvmp use v10.9.0 : Use the specific version
インストール先のディレクトリ
%USERPROFILE%\.nvmp\versions
ディレクトリにダウンロードしたzipを展開します。
nvmp use
コマンドで選択したバージョンに対して、%USERPROFILE%\.nvmp\current
ディレクトリからジャンクションを張ることでバージョン切り替えを実現しています。
%USERPROFILE%
`- .nvmp
+- current [-> .\versions\v10.14.2]
`- versions
+- v11.4.0
+- v10.14.2
+- v8.14.0
`- v6.15.1
対応しているNode.jsのバージョン
v4.5.0〜v4.9.1, v6.2.1〜
https://nodejs.org/dist/$(version)/node-$(version)-win-$(arch).zip
をダウンロードする都合上、それが用意されているバージョンだけに対応しています。バージョン一覧を見ていると、2016年6月あたりからWindows向けzipファイルも配布されるようになった模様です。
元々はnode.exe
を単体でダウンロードして、npmのアーカイブはgithubから別途ダウンロードする実装で、当時はもう少し古いバージョンにも対応していました。
現在はcodeload.github.com
がTLS1.2以外で接続できなくなってしまい、PowerShell v2ではSystem.net.WebClient
がTLS1.2に対応していないため、実装を見直した経緯があります。
さいごに
動作検証できる環境にいる限りはメンテしていくつもりです。
今後はlatest
やLTSコードネームによるバージョン指定とかに対応していきたい。
また、2018年になってPowerShell Core 6.0もクロスプラットフォーム向けにリリースされたことですし、v2向けの実装は維持しつつ、最新のバージョンによる実装も試していきたいですね。
Author And Source
この問題について(PowerShell v2 で動くNode.jsのバージョンマネージャを作った), 我々は、より多くの情報をここで見つけました https://qiita.com/clomie/items/e83c80d7594ca826e63d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .