Vercelの古いデプロイを一括で削除する

Vercelにデプロイするごとにデプロイの一覧に古いデプロイがたまっていきます。

一覧から1つずつ古いデプロイの詳細を開いて削除していくのは面倒なので一括で削除する方法について調べました。

Vercelから提供されているコマンドラインで操作できるVercel CLIを使用することで一括で削除することができました。

Vercel CLIのインストール

Vercel CLIに記載がある通り以下のコマンドでインストールします。Node.jsがインストールされていない場合は先にインストールしておきます。

npm i -g vercel

以下のコマンドでバージョン情報が表示されたらインストール成功です。

vercel --version

デプロイの一覧表示

まずはプロジェクトの一覧を表示してみます。以下のように引数なしでListコマンドを実行します。

vercel ls

まだVercel CLIでログインしていない場合は以下のようにログイン方法の選択が表示されるので、利用しているログイン方法を選択してVercelにログインします。

Vercel CLI 23.1.2
> > No existing credentials found. Please log in:
> Log in to Vercel (Use arrow keys)
> Continue with GitHub
  Continue with GitLab
  Continue with Bitbucket
  Continue with Email
  Continue with SAML Single Sign-On
  ─────────────────────────────────
  Abort

ログインに成功した場合はプロジェクト一覧が表示されます。

project        latest deployment                         state    age    username
hugo-sample    hugo-sample-hnh50pzsk-xxxxx.vercel.app    READY    42m    xxxxx
blog           blog-xxxxxxxxx-xxxxx.vercel.app           READY    15h    xxxxx

次はプロジェクトのデプロイの一覧を表示してみます。以下のようにListコマンドにプロジェクトを指定して実行します。

vercel ls hugo-sample

指定したプロジェクト(hugo-sample)のデプロイの一覧が表示されます。

project        latest deployment                         state    age    username
hugo-sample    hugo-sample-hnh50pzsk-xxxxx.vercel.app    READY    48m    xxxxx
hugo-sample    hugo-sample-2hv7eucpi-xxxxx.vercel.app    READY    49m    xxxxx
hugo-sample    hugo-sample-6ljp7y4eg-xxxxx.vercel.app    READY    55m    xxxxx
hugo-sample    hugo-sample-6ntsq6vk7-xxxxx.vercel.app    READY    1h     xxxxx
hugo-sample    hugo-sample-ctj0lcvr7-xxxxx.vercel.app    READY    1h     xxxxx
hugo-sample    hugo-sample-7qlykd24c-xxxxx.vercel.app    READY    1h     xxxxx

古いデプロイの一括削除

古いデプロイの削除にはRemoveコマンドを使用します。

ただし、Vercel CLIのRemoveのドキュメントに以下の記載があり、--safeオプションを指定しない場合は指定したプロジェクトが削除されてしまうので注意が必要です。

WARNING: By using the project name, the entire project will be removed from the account unless the `--safe` is used.

以下のようにRemoveコマンドにプロジェクトと--safeオプションを指定して実行します。

vercel rm hugo-sample --safe

削除するデプロイの一覧と削除の確認メッセージが表示されます。削除を実行する場合はyを入力します。

> Found 5 deployments for removal in xxxxx [1s]
> The following 5 deployments will be permanently removed:
  dpl_9naynD41PnHrh3RJuCqZ8SajGAiX      https://hugo-sample-2hv7eucpi-xxxxx.vercel.app      1h ago
  dpl_B6smVuzcc32z1tmwQHZA3U19Y3dF      https://hugo-sample-6ljp7y4eg-xxxxx.vercel.app      1h ago
  dpl_2iVx1MGfWZnV5vg8Y7zDk3oaM15A      https://hugo-sample-6ntsq6vk7-xxxxx.vercel.app      1h ago
  dpl_Bh3acKCLfsC23cEYFrNnVEvkbTtv      https://hugo-sample-ctj0lcvr7-xxxxx.vercel.app      1h ago
  dpl_E2DAJYcf2BaSQGeP1A5UEJBo47sL      https://hugo-sample-7qlykd24c-xxxxx.vercel.app      2h ago
> Are you sure? [y/N]

削除が成功したらListコマンドでデプロイの一覧を確認します。

vercel ls hugo-sample

古いデプロイが削除されていることが確認できました。

project        latest deployment                         state    age    username
hugo-sample    hugo-sample-hnh50pzsk-xxxxx.vercel.app    READY    1h     xxxxx

まとめ

Vercel CLIを使うことでコマンドラインから古いデプロイを一括削除することができました。

Vercel CLIのRemoveコマンドに--safeオプションを指定しない場合はプロジェクトごと削除されてしまうので注意が必要です。

ちなみに実際に--safeオプションなしでRemoveコマンドを実行してみたところプロジェクトが削除されました。