LoginSignup
3
1

More than 5 years have passed since last update.

PowerShell v2 で動くNode.jsのバージョンマネージャを作った

Posted at

これは 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.gif

コマンド一覧

その他のコマンドについてはヘルプを見てください。

> 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向けの実装は維持しつつ、最新のバージョンによる実装も試していきたいですね。

3
1
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
3
1