Wrangler CLI — Công Cụ Deploy Cloudflare¶
Wrangler là gì?¶
Wrangler là CLI chính thức của Cloudflare để tương tác với toàn bộ Cloudflare Developer Platform: Workers, Pages, D1, KV, R2.
Authentication¶
# Login vào Cloudflare account
wrangler login
# → Mở browser → Authorize → Token được lưu local
# Kiểm tra đang login với account nào
wrangler whoami
Workers Commands¶
# Chạy Worker local (hot reload)
wrangler dev
# → http://localhost:8787
# → Tự restart khi thay đổi code
# Deploy lên production
wrangler deploy
# → Đọc wrangler.toml để biết tên worker, entry point
# → Bundle TypeScript → Upload lên Cloudflare
# Xem logs realtime (production)
wrangler tail
D1 Database Commands¶
# Tạo database mới
wrangler d1 create my-database
# Output: database_id = "426266db-..." → copy vào wrangler.toml
# Apply pending migrations
wrangler d1 migrations apply group-accounting-db
# → Apply trên production
wrangler d1 migrations apply group-accounting-db --local
# → Apply trên local SQLite (trong .wrangler/state/)
# Xem migrations đã apply
wrangler d1 migrations list group-accounting-db
# Query trực tiếp (debug)
wrangler d1 execute group-accounting-db \
--command "SELECT * FROM users LIMIT 5"
wrangler d1 execute group-accounting-db --local \
--command "SELECT COUNT(*) FROM transactions"
# Chạy SQL file
wrangler d1 execute group-accounting-db \
--file ./migrations/0001_initial_schema.sql
Secrets Management¶
# Set secret (input ẩn, không log)
wrangler secret put JWT_SECRET
# → Nhập giá trị: [hidden]
wrangler secret put TURNSTILE_SECRET_KEY
wrangler secret put GOOGLE_CLIENT_SECRET
# List secrets đã set (chỉ hiện tên, không hiện giá trị)
wrangler secret list
# Xóa secret
wrangler secret delete JWT_SECRET
# Set secret cho local dev (lưu vào .dev.vars)
# Tạo file .dev.vars (KHÔNG commit file này):
# JWT_SECRET=your-local-secret-here
# TURNSTILE_SECRET_KEY=1x0000000000000000000000000000000AA
Pages Commands¶
# Deploy Pages project
wrangler pages deploy dist --project-name quythuchi
# dist: thư mục output sau khi build
# List projects
wrangler pages project list
# Xem deployment history
wrangler pages deployment list --project-name quythuchi
wrangler.toml — Config File¶
# api/wrangler.toml
name = "group-accounting-api" # tên Worker (dùng làm subdomain)
main = "src/index.ts" # entry point
compatibility_date = "2024-07-25" # pin Workers runtime version
compatibility_flags = ["nodejs_compat"] # bật Node.js compat APIs
# Static environment variables (public, OK để commit)
[vars]
FRONTEND_URL = "https://quythuchi.pages.dev"
# D1 Database binding
[[d1_databases]]
binding = "DB" # tên biến trong code: env.DB
database_name = "group-accounting-db" # tên database trên Cloudflare
database_id = "426266db-0e17-4cb8-a9c9-6511f16ee301"
# KV Namespace (nếu cần)
# [[kv_namespaces]]
# binding = "CACHE"
# id = "..."
# R2 Bucket (nếu cần)
# [[r2_buckets]]
# binding = "STORAGE"
# bucket_name = "my-bucket"
Local Development — .dev.vars¶
File chứa secrets cho local development. Không commit file này:
# api/.dev.vars
JWT_SECRET=local-dev-secret-change-in-production
TURNSTILE_SECRET_KEY=1x0000000000000000000000000000000AA
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
FRONTEND_URL=http://localhost:5173
Wrangler tự đọc .dev.vars khi chạy wrangler dev.
Local D1 State¶
Khi chạy wrangler dev, D1 data được lưu local tại:
Reset local database:
Makefile Integration¶
Dự án dùng Makefile để tổng hợp các commands hay dùng:
# Makefile
.PHONY: dev deploy migrate
dev:
cd api && wrangler dev &
cd web && npm run dev
deploy-api:
cd api && wrangler deploy
deploy-web:
cd web && npm run deploy
migrate:
cd api && wrangler d1 migrations apply group-accounting-db
migrate-local:
cd api && wrangler d1 migrations apply group-accounting-db --local
make dev # chạy cả api và web
make migrate # apply migrations production
make migrate-local # apply migrations local