大量のNetlifyサイトが溜まってきたので、CLIを使って一括削除した際の手順をまとめます。

背景

開発やテストで作成したNetlifyサイトが41個まで増えていました。現在使用しているサイトは数個だけだったため、古いサイトをまとめて削除することにしました。

環境

  • macOS
  • Node.js
  • netlify-cli v23.15.1

手順

1. Netlify CLIのインストール

npm install -g netlify-cli

2. ログイン

netlify login

ブラウザが開き、Netlifyの認証画面が表示されます。認証を許可するとCLIにトークンが保存されます。

3. サイト一覧の取得

netlify sites:list

JSON形式で取得する場合は --json オプションを付けます。

netlify sites:list --json

Python等で整形して確認すると見やすくなります。

netlify sites:list --json | python3 -c "
import json, sys
sites = json.load(sys.stdin)
print(f'合計: {len(sites)} サイト\n')
for i, s in enumerate(sites):
    name = s.get('name', 'N/A')
    url = s.get('url', 'N/A')
    updated = s.get('updated_at', 'N/A')[:10]
    site_id = s.get('id', 'N/A')
    print(f'{i+1:3d}. {name}')
    print(f'     URL: {url}')
    print(f'     更新日: {updated}  ID: {site_id}')
"

4. サイトの削除

個別に削除する場合:

netlify sites:delete --force <site-id>

--force を付けないと確認プロンプトが表示されます。

5. シェルスクリプトで一括削除

削除対象のサイトIDと名前を配列に入れて、ループで一括削除できます。

#!/bin/bash

sites=(
  "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:site-name-1"
  "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy:site-name-2"
  "zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz:site-name-3"
)

deleted=0
failed=0

for entry in "${sites[@]}"; do
  id="${entry%%:*}"
  name="${entry##*:}"
  echo -n "削除中: $name ... "
  if netlify sites:delete --force "$id" 2>&1; then
    echo "OK"
    ((deleted++))
  else
    echo "FAILED"
    ((failed++))
  fi
done

echo ""
echo "=== 完了 ==="
echo "削除成功: $deleted"
echo "失敗: $failed"

APIを直接使う方法

CLIを使わずにREST APIを直接呼ぶことも可能です。

認証トークンの取得

Netlifyのユーザー設定 > Applications > Personal access tokens からトークンを作成します。

サイト一覧の取得

curl -H "Authorization: Bearer $NETLIFY_AUTH_TOKEN" \
  https://api.netlify.com/api/v1/sites

サイトの削除

curl -X DELETE \
  -H "Authorization: Bearer $NETLIFY_AUTH_TOKEN" \
  https://api.netlify.com/api/v1/sites/<site-id>

実行結果

今回は41サイト中39サイトを削除し、使用中の2サイトのみを残しました。全件エラーなく完了しました。

まとめ

  • Netlify CLIの sites:listsites:delete で簡単にサイトの管理ができる
  • --json オプションでプログラムから扱いやすい形式で取得できる
  • --force オプションで確認プロンプトをスキップできるため、一括処理に便利
  • 削除は取り消せないので、削除前にサイト一覧を確認してから実行すること