開発ドライブ(Dev Drive) #6 npm パッケージ キャッシュ

Microsoft Build 2023で発表があった開発ドライブ (Dev Drive)が使えるようになりました。さっそく、開発ドライブを作成・設定しました。今回は、開発ドライブを作成した後の各種設定について説明します。

開発ドライブ (Dev Drive)とは

開発ドライブ (Dev Drive)の説明、要件、作成方法などは、以前の投稿で説明しましたので、説明は省略します。以前の投稿を参照してください。

開発ドライブの作成後の設定

今回も開発ドライブを作成した後の、開発環境の設定について説明します。

開発ドライブは、レポジトリ(ソースコード)の保存先やパッケージキャッシュの保存先の利用が想定されています。しかし、開発ドライブを作成しただけでは、これらのものが自動的に開発ドライブに移動することはありません。

そのため、開発ドライブを作成した後は、

  • ソースコードを移動
  • ソースコードの置き場所の既定値の設定の変更
  • パッケージキャッシュの保存先の変更

などの作業をする必要があります。

以降は、以下の前提で説明をします。

  • 開発ドライブ作成前の既存のレポジトリの保存先: C:\Repos\
  • 開発ドライブ作成前の既存のパッケージ キャッシュの保存先: それぞれのパッケージキャッシュの既定のフォルダー
  • 作成した開発ドライブのドライブレター: Dドライブ
  • 開発ドライブ上の新たなレポジトリの保存先: D:\Repos\
  • 開発ドライブ上の新たなパッケージ キャッシュの保存先: D:\Packages\
    • D:\Packages\npm-cache\
    • D:\Packages\nuget\
  • 開発ドライブ上の新たなシンボル キャッシュ フォルダー: D:\SymbolCache\

nuget 以外のパッケージキャッシュフォルダー

C#のプログラム開発では、パッケージマネージャーはnugetです。しかし、他の言語でのプログラム開発であれば他のパッケージマネージャーを使います。node.js では npm 、pythonではpip などを使います。

これらのパッケージマネージャーもローカル ストレージにパッケージ キャッシュを保存します。

そのため、これらのパッケージ キャッシュも、開発ドライブに配置するのが適しています。これらのパッケージ キャッシュ フォルダーも開発ドライブ側に移動します。

node.js の npm パッケージ キャッシュ フォルダーの設定

node.js のパッケージマネージャーである npm も他のパッケージマネージャーと同様にパッケージキャッシュをローカルストレージに配置します。

この npm のパッケージキャッシュを開発ドライブに移設します。開発ドライブ側に作成する npm のパッケージ キャッシュ フォルダーは、D:\Packages\npm-cache\ である前提で説明します。

この投稿の内容を超える詳細については、npm ドキュメントの npm-cachenpm config: cache を参照してください。

パッケージ キャッシュ フォルダーの既定値

npm のパッケージ キャッシュ フォルダーの既定値は、以下となります。

C:\Users\(username)\AppData\Roaming\npm-cache\
(一部のシステムでは、C:\Users(username)\AppData\Local\npm-cache\ にあることがあり)

(username)のところは、ログオンしているユーザーのユーザー名となります。ユーザーごとに変化しないパスで表現すると以下のパスになります。

%APPDATA%\npm-cache
(一部のシステムでは、%LOCALAPPDATA%\npm-cache にあることがあり)

この既定のパスを、開発ドライブに変更します。

パッケージ キャッシュ フォルダーの設定値

この既定のフォルダーパスを変更する方法には、二つあります。

  • npm の構成設定ファイル(.npmrc ファイル)で設定する
  • 環境変数(npm_config_cache)で設定する

後者の方法は、他のnpmの構成設定とは異なる場所に設定することになります。その為、npm のすべての設定を確認するときに分かりにくくなります。今回は、他の npm の構成設定と同じ場所に設定するために前者の方法で設定します。

npm の構成設定ファイルに以下のようにcacheの項目を追加することにより、npm パッケージ キャッシュ フォルダーを任意の場所に変更できます。

cache=D:\packages\npm-cache

環境変数 npm_config_cache が設定されていない場合、npm パッケージマネージャーは、npm の構成設定ファイルの cache の値を、以下の場所から順番に読み込みます。

  1. npm の cache の既定値(%APPDATA%\npm-cache)
  2. npm のビルトインの構成ファイル (npm-installed-folder\npmrc)の cache の値
  3. グローバル レベルの構成ファイル (%APPDATA%\npm\etc\npmrc)の cache の値
  4. ユーザー レベルの構成ファイル (%USERPROFILE%\.npmrc)の cache の値
  5. プロジェクトレベルの構成ファイル (project-root-folder\.npmrc)の cache の値

cache 設定項目が複数の構成設定ファイルにあった場合は、後から読み込んだファイルの設定値が使われます。

今回の場合は、ユーザーのパッケージ キャッシュ フォルダーを変更したいので、ユーザーレベルのファイルを変更するのが適切です。

パッケージ キャッシュ フォルダーの設定の変更

構成ファイルを直接変更する場合は、ユーザー レベルの構成ファイル %USERPROFILE%\ (C:\Users\(username)\) にあるnpm 構成ファイル(.npmrc)をテキストエディターなど開き(ファイルがない場合は新規作成する)、cache=D:/packages/npm-cache を追加します。

cache=D:\packages\npm-cache

npm CLI (npm.cmd) が使える環境であれば、下記のコマンドラインを実行することにより、ユーザーレベルの構成設定に追加できます。

npm config set cache "D:/packages/npm-cache"

また、下記のコマンドラインを実行することにより、設定内容の確認ができます。

npm config get cache

既存のパッケージ キャッシュ フォルダーのファイルを移動

パッケージ キャッシュ フォルダーの設定を変更したら、パッケージの再ダウンロードが発生しないように、古いパッケージ キャッシュ フォルダーのファイルを新しいパッケージ キャッシュ フォルダーにコピーします。なお、パッケージの再ダウンロードが発生してもよい場合は、このコピーは不要です。

まずは、既定のパッケージ キャッシュ フォルダーである%APPDATA%\npm-cache\ (C:\Users\(username)\AppData\Roaming\npm-cache\) フォルダーを開きます。

このパスを「ファイル名を指定して実行」(Windowsキー + Rキー) や Windowsエクスプローラーのアドレス バーに入力しEnterキーを押下すると、npm パッケージ キャッシュ フォルダーが開きます。

ファイル名を指定して実行に %APPDATA%\npm-cache を入力
Windowsエクスプローラーのアドレスバーに %APPDATA%\npm-cache を入力

この npm パッケージ キャッシュ フォルダー内のすべてのファイルとフォルダーを開発ドライブのD:\packages\npm-cache\フォルダーにコピーします。

コピーしたパッケージ キャッシュ ファイルの確認

コピーが完了したら、正しくコピーされているか確認するために、npm cache verifyコマンドでキャッシュを確認します。

D:\>npm cache verify
Cache verified and compressed (E:\packages\npm-cache\_cacache):
Content verified: 1737 (83007631 bytes)
Content garbage-collected: 10 (2488191 bytes)
Index entries: 2343
Finished in 2.653s

D:\>

存在するパッケージ キャッシュの量により表示される数値は異なります。内容に問題がなければ、キャッシュフォルダーの設定変更と既存のキャッシュのコピーは成功しています。

既存のパッケージキャッシュフォルダーの削除

npm パッケージ キャッシュ フォルダーを、既定値のフォルダーパスから開発ドライブのパスに変更した後は、既存のキャッシュフォルダーは利用されることはありません。ストレージを無駄に消費するだけなので、既存のパッケージ キャッシュ フォルダーは削除します。

以上で、npm のパッケージ キャッシュ フォルダーに関する設定の変更は完了です。


今回の投稿では、npm のパッケージ キャッシュ フォルダーを開発ドライブに移設する方法を説明しました。

コメントを残す