Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@clomie

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

More than 1 year has passed since last update.

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

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
clomie

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?