npm代替を目指すパッケージマネージャvltを触ってみた

npm代替を目指すパッケージマネージャvltを触ってみた

npm互換で高速なパッケージマネージャ「vlt」がv1.0をリリースしたので、実際に使ってみました。セットアップからプロジェクト作成、そして詳しく計測したインストール速度まで、vltの実力を検証します。
2026.08.18

こんばんは、情報システム室の夏目です。

今月頭、npmに変わる新しいJavaScriptのパッケージマネージャvltのv1.0のリリースがありました。

今回はこのvltを触ってみました。

vltとは

https://www.vlt.io/

https://x.com/darcy/status/2084694657930310142?s=20

vlt technologyが開発しているnpm互換のパッケージマネージャです。
npm互換であるため、既存のツールなどでもそのまま使用することができます。
また、インストールもnpmよりも高速で行います。

vltというパッケージマネージャとvltレジストリというサービスの二段構えになっています。

vltレジストリ

vltはデフォルトでnpmレジストリのミラーであるvltレジストリを参照します (vltレジストリもnpmレジストリ互換であるためnpmと同様に扱える)。
vltレジストリではユーザーに近いエッジロケーションからパッケージを配布するためnpmレジストリよりも高速でダウンロードできます。
vltレジストリ以外のレジストリを使用することもできます。

また、vtlレジストリではマルウェアを含まない安全なJavaScriptレジストリの提供を目指しており、OSVなどの脆弱性データベースなどを参照して不正なmanifestやマルウェアを排除するようになっています。

vltレジストリはプライベートレジストリの機能もあり、無料プランであれば2GBまで使用可能です。

使ってみる

vltでvltレジストリを使用するにはアカウントを作成し。

アカウントを作成する

https://www.vlt.io にアクセスします。

579d8daf-3e37-4658-8fe2-93ee55e355fe

右上の SignUp をクリックします。

d915d03a-34ab-41ca-95d0-b75e944d1cdd

GithubやGoogleの認証を使用するか、メールとパスワードで認証をするかを選びます。
今回はメールとパスワードで進めるので、入力してから Continue をクリックします。

49665f24-6f53-4680-8c9b-aa74d35e33d9

Verifyのためにメールが届くので、メールを確認してVerify用の数字をコピペします。

03c9d8ad-eeaa-4c0b-855d-db00657b1862

アカウントの作成画面になるので、必要項目を入力します。
また、プランを選択できるので今回は Free を選択します。

その後、 Create をクリックします。

3d2eaca1-69ed-49da-af9f-07916ad34c1f

アカウントが作成され、ダッシュボードが表示されます。

vlt インストールする

$ npm install -g vlt

vltのインストールはこれだけです。
次にセットアップをします。

$ vlt setup
Sign up or log in at https://www.vlt.io before continuing.
vlt.io account or organization slug: cm-natsume-yuta
Authenticate with your vlt.io account now? (Y/n)
Each registry is authenticated separately, so the browser opens once per registry.
First, let's authenticate your public npm registry mirror ("npm")...
Opening a web browser to: https://www.vlt.io/auth/cli-login/AaATt3X4cfi32RonAFy9nA
Now let's authenticate your private registry ("main")...
Opening a web browser to: https://www.vlt.io/auth/cli-login/AaATt44ScF6ey6q8mJUdog
Add another registry alias? (y/N)
Configured 2 registry aliases for "cm-natsume-yuta" in user config:
  npm -> https://registry.vlt.io/cm-natsume-yuta/npm/
  main -> https://registry.vlt.io/cm-natsume-yuta/main/

You can now install packages, e.g.:
  vlt install <pkg>

vlt.io で認証を通し、vltレジストリを使用可能にしました。
(ブラウザで認証を行います)

これでvltを使えるようになりました。

vltを使ってみる

npmと互換性があるということなので、今回はViteでReactのプロジェクトを作ってみます。

$ vlt create vite@latest
About to install: create-vite@latest
from: https://registry.vlt.io/cm-natsume-yuta/npm/create-vite/-/create-vite-9.1.2.tgz
into: ~/Library/Application Support/vlt/vlx/create-vite-66bc37d0
Is this ok? (y) y

  Project name:
  trial-vlt

  Select a framework:
  React

  Select a variant:
  TypeScript + React Compiler

  Which linter to use?
  Oxlint

  Install with npm and start now?
  No

  Scaffolding project in /Users/natsume.yuta/spaces/tmp/013/trial-vlt...

  Done. Now run:

  cd trial-vlt
  npm install
  npm run dev

vltでもnpmと同様にプロジェクトの作成ができました。

次に、依存ライブラリのインストールを行ってみます。

$ cd trial-vlt
$ ll
.rw-r--r--@  361 natsume.yuta 2026-08-18 16:17 index.html
.rw-r--r--@  681 natsume.yuta 2026-08-18 16:17 package.json
drwxr-xr-x@    - natsume.yuta 2026-08-18 16:17 public
.rw-r--r--@ 1.3k natsume.yuta 2026-08-18 16:17 README.md
drwxr-xr-x@    - natsume.yuta 2026-08-18 16:17 src
.rw-r--r--@  655 natsume.yuta 2026-08-18 16:17 tsconfig.app.json
.rw-r--r--@  119 natsume.yuta 2026-08-18 16:17 tsconfig.json
.rw-r--r--@  558 natsume.yuta 2026-08-18 16:17 tsconfig.node.json
.rw-r--r--@  286 natsume.yuta 2026-08-18 16:17 vite.config.ts
$ vlt install
resolving dependencies > extracting files
72 cache hits
113 requests
Done in 12095ms

📦 1 packages have install scripts defined & were not fully built
🔎 Run `vlt query :scripts` to list them
🔨 Run `vlt build` to run all required scripts to build installed packages.
$ ll
.rw-r--r--@  361 natsume.yuta 2026-08-18 16:17 index.html
drwxr-xr-x@    - natsume.yuta 2026-08-18 16:20 node_modules
.rw-r--r--@  681 natsume.yuta 2026-08-18 16:17 package.json
drwxr-xr-x@    - natsume.yuta 2026-08-18 16:17 public
.rw-r--r--@ 1.3k natsume.yuta 2026-08-18 16:17 README.md
drwxr-xr-x@    - natsume.yuta 2026-08-18 16:17 src
.rw-r--r--@  655 natsume.yuta 2026-08-18 16:17 tsconfig.app.json
.rw-r--r--@  119 natsume.yuta 2026-08-18 16:17 tsconfig.json
.rw-r--r--@  558 natsume.yuta 2026-08-18 16:17 tsconfig.node.json
.rw-r--r--@  286 natsume.yuta 2026-08-18 16:17 vite.config.ts
.rw-r--r--@  54k natsume.yuta 2026-08-18 16:20 vlt-lock.json

依存ライブラリのインストールができました。
体感的にはnpmでインストールするときよりも高速に感じます。

vltではロックファイルは vlt-lock.json であるようです。

vltレジストリを使わずにインストールしてみる

一端インストールしたものと、ローカルのキャッシュを削除してみます。

$ rm -rf node_modules
$ rm vlt-lock.json
$ vlt cache delete-all

削除したので、vltレジストリを使わずにインストールしてみます。

# 自分の環境のnpmは `npm.flatt.tech` というレジストリを使用しているのでそちらを使う
$ vlt install --registry=https://npm.flatt.tech/
resolving dependencies > extracting files
185 requests
Done in 6657ms

📦 1 packages have install scripts defined & were not fully built
🔎 Run `vlt query :scripts` to list them
🔨 Run `vlt build` to run all required scripts to build installed packages.

vltレジストリを使ったときで約12秒, npm.flatt.tech を使ったときで約6秒でした。
vltレジストリを使わずとも、npmの代わりにvltを使うだけでも高速化できそうです。

インストールの速さを計測してみる

vltリポジトリを使わずとも高速化できているようなので、ちょっと計測をしてみます。

  • 計測を行うのは install (ロックファイルの生成も行う) と ci (ロックファイルからインストールを行う) コマンドの二つ
  • インストールを行う前にローカルのキャッシュを消す
  • レジストリは npm.flatt.tech を使用する
  • 100回実行して計測する
  • time を使って計測する

上記条件で実行してみます。

またそれぞれにおいてシェルスクリプトを書いていますが、実際に計測に使用したものではありません。
実際の計測ではPythonでループを組んでsubprocessでコマンド実行させて計測を行いました。
ここに記載しているのは、あくまで実行した内容を再現するシェルスクリプトです。

npm install

npm_install.sh
#!/usr/bin/env bash

rm -rf node_modules
rm -f package-lock.json
npm cache clean --force

time npm install
(秒) 最大 最小 平均 中央
real 30.98 8.949 14.59186 13.2525
user 4.83 3.234 3.76756 3.6675
sys 2.04 1.359 1.57868 1.5345

npm ci

npm_ci.sh
#!/usr/bin/env bash

rm -rf node_modules
npm cache clean --force

time npm ci
(秒) 最大 最小 平均 中央
real 4.263 1.696 2.2996 2.066
user 1.327 0.773 0.9555 0.944
sys 1.077 0.746 0.8300 0.817

vlt install --registry=https://npm.flatt.tech/

vlt_install.sh
#!/usr/bin/env bash

rm -rf node_modules
rm -f vlt-lock.json
vlt cache delete-all

time vlt install --registry=https://npm.flatt.tech/
(秒) 最大 最小 平均 中央
real 5.459 1.298 2.10001 1.98
user 1.801 0.704 0.88893 0.89
sys 1.045 0.706 0.76334 0.76

vlt ci --registry=https://npm.flatt.tech/

vlt_ci.sh
#!/usr/bin/env bash

rm -rf node_modules
vlt cache delete-all

time vlt ci --registry=https://npm.flatt.tech/
(秒) 最大 最小 平均 中央
real 7.09 0.825 2.12396 2.02
user 1.27 0.433 0.94349 0.98
sys 1.04 0.607 0.83277 0.86

計測結果をまとめる

4つの計測結果を real の値でまとめると次のようになります

(秒) 最大 最小 平均 中央
npm install 30.98 8.949 14.5919 13.253
npm ci 4.26 1.696 2.2996 2.066
vlt install 5.46 1.298 2.1000 1.975
vlt ci 7.09 0.825 2.1240 2.019

ロックファイルの生成を伴う install は明確に早くなっています。
ci ではそこまで差がないようです。

まとめ

以上、vltを触ってみた話でした。

何かのお役に立てれば幸いです。

引用

  • npm代替を目指すセキュリティファーストなパッケージマネージャ「vlt」バージョン1.0に到達。npmのミラーレジストリ、プライベートレジストリも提供開始 - Publickey

この記事をシェアする

関連記事