| | Compress 🗜️ | | Favicon 🎨 |
Delete ♻️
Delete all stale Cloudflare Pages deployments for a project or an entire account.
Paginated - handles any number of deployments ♻️
CLI, Node.js module, Shell script, and Cloudflare Worker ♻️
Note
The active production deployment is never deleted.
Important
API Token auth is preferred. Create a token with Account → Cloudflare Pages → Edit permission scoped to your account.
npm install -g @playform/deleteAll flags fall back to .env values when not provided on the command line, so
running Delete with no arguments will use whatever is set in .env:
Deleteor override any value explicitly:
Delete -t <Token> -i <AccountID> -p <Project>All flags:
-V, --version output the version number
-e, --Email <Email> Account email (for Global API Key auth)
-i, --ID <ID> Account ID
-k, --Key <Key> Global API key (for Email auth)
-t, --Token <Token> API token (preferred over Email + Key)
-p, --Project <Project> Pages project name (omit to process all projects)
-l, --Logger <Logger> Log level: 2 = verbose, 1 = summary (default), 0 = silent
-b, --Batch <Batch> Parallel deletions per batch (default: 10)
-d, --Delay <Delay> Milliseconds between batches (default: 0)
-h, --help display help for command
| Level | Output |
|---|---|
0 |
Silent - nothing printed |
1 |
Summary - project header and final deleted count only |
2 |
Verbose - batch progress and per-deployment ✓/✗ result (default) |
.env
Logger=2or via CLI:
Delete -l 0CLI -p always overrides the Project value in .env, so you can leave
Project="" in .env and pass -p <name> per run.
Deletions are processed in parallel batches. Increase Batch for speed on large
projects, add Delay to avoid hitting Cloudflare rate limits:
.env
Batch=25
Delay=500or via CLI:
Delete -b 25 -d 500Source/Main.ts
await (
await import("@playform/delete")
).default({
Token: "your-api-token",
ID: "your-account-id",
Project: "your-project-name",
});.env
Token="your-api-token"
ID="your-account-id"
Project="your-project-name"./Delete.shReads credentials from .env. Pass a project name as the first argument or set
Project= in .env to target a single project; omit both to process all
projects in the account.
Deploy as a scheduled Cloudflare Worker to run on a cron trigger:
wrangler deploySee CHANGELOG.md for a history of changes to this utility.