Skip to main content

Node.jsのバージョン管理とnpmレジストリの切り替えを使いこなす

著者

Juan Picado

Node How even quick async functions can block the Event Loop starve tumb

2019年8月28日

0 分で読めます

今年初めに公開したnpmのセキュリティに関する10のベストプラクティスガイドに続き、開発環境でNode.jsのバージョンやnpmレジストリを簡単に切り替える方法をさらに掘り下げていきます。

Nodeのバージョン管理ツール

Node.jsアプリケーションを開発する際、日々の作業に対応するために複数のNode.jsバージョンをインストールする必要があるかもしれません。たとえば、本番環境のバグを解決するときや、プロジェクトを切り替えるときなどです。そのたびに手動で作業するのは大変ですが、もっとよい方法があります。

Node Version Manager(nvm)は、Node.jsのバージョンを切り替えるためのツールです。開発環境で本番環境のバグを再現する際の手間を軽減できます。

デフォルトのインストール方法がサポートされているのはmacOSとLinux環境のみです。Windowsをお使いの場合は、必要な機能を備えたnvm-windowsをご確認ください。

CLIを使えば、次のコマンドを実行して任意のNode.jsバージョンをインストールできます。


nvm install  8.9.4
nvm install node   # nvm install the latest release
nvm install --lts  # nvm install the latest LTS release

簡単ですね!それでは、NVMが役立つ一般的なケースをいくつか見てみましょう。

  • チーム内で、メンバーによって使用しているNode.jsのバージョンが異なることがあります。しかし、これはよくあるミスで、チームの他のメンバーが使っているNode.jsバージョンではサポートされないコードをマージしてしまうなど、問題につながる可能性があります。チームで使用するバージョンを統一するには、`.nvmrc`ファイルを導入します。例:

    $ echo "10" > ~/.nvmrc

    ファイルを設置すると、チームメンバーがnvm installを実行した際に、記載されたバージョンが常にデフォルトで使用されます。また、別のバージョンを使っているメンバーがコードを提供するのを防げます。こうすることで、互換性のないNode.jsの機能をリリースしたり、アプリを壊すおそれのある構文を使ったりする事態を避けられます。

  • インストール済みのものとは異なる、古いまたは新しいNode.jsバージョンでバグを再現する必要がありますか?NVMを使わずに複数のnpmバージョンをグローバルにインストールしておくのは、手動でのインストールが必要になるため大変です。一方、NVMなら別の`install`コマンドを実行するだけで、異なるバージョンを並行して使えるようになります。以下の例をご覧ください。

Node.jsを複数インストールし、それぞれに複数のグローバルnpmモジュールを導入している場合、Node.jsのバージョンを切り替えるたびに、それらのモジュールをすべて再インストールする必要があります。

簡単に解決する方法をご紹介します。

$ nvm install 10 --reinstall-packages-from=8

NPMレジストリ管理ツール

複数のレジストリを使う場合、NPM Registry Managerも便利なツールです。企業での開発では複数のレジストリを使うことがよくあります。また、個人でローカルのプライベートレジストリにverdaccioなどのツールを使う場合にも役立ちます。GitHubがパッケージレジストリを公開したことで、活用の機会はさらに増えています。

NRMは、次のような複数のレジストリを標準でサポートしています。

$ nrm use cnpm

npmのセキュリティと生産性を高めるヒントについては、npmのセキュリティに関する10のベストプラクティスガイドのチートシートをご覧ください。

安全な開発を!

カテゴリー:

続きを読む

Live Stream

修正エージェントをわかりやすく解説:見つけるより直すことが重要な理由

SnykのRemediation Agentが、セキュリティインテリジェンス、破壊可能性分析、検証を活用して、脆弱性をマージ可能なプルリクエストに変える仕組みをご覧ください。

feature insights context
Blog

keyv npm侵害の実態:preinstallマルウェア、信頼された来歴、IDEフック

keyv 6.0.0と関連するnpmリリース10件に、インストール時に実行されるマルウェアが含まれていました。影響を受けるバージョン、ハッシュ、検出手順、安全な修復の順序を解説します。

feature ai ide dark
Blog

Evo Agentic AppSecの初公開:エージェント型の脆弱性修正と悪意あるコードの防御

Snyk初のAgentic AppSec機能をご紹介します。脆弱性を自動修正するRemediation Agentと、危険なパッケージのリリースを未然に防ぐMalicious Code Defenseを解説します。