mirror of
https://github.com/ksyasuda/dotfiles.git
synced 2026-03-20 18:11:27 -07:00
update skills
This commit is contained in:
@@ -0,0 +1,197 @@
|
||||
# Wrangler Configuration
|
||||
|
||||
Configuration reference for wrangler.jsonc (recommended).
|
||||
|
||||
## Config Format
|
||||
|
||||
**wrangler.jsonc recommended** (v3.91.0+) - provides schema validation.
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"$schema": "./node_modules/wrangler/config-schema.json",
|
||||
"name": "my-worker",
|
||||
"main": "src/index.ts",
|
||||
"compatibility_date": "2025-01-01", // Use current date
|
||||
"vars": { "API_KEY": "dev-key" },
|
||||
"kv_namespaces": [{ "binding": "MY_KV", "id": "abc123" }]
|
||||
}
|
||||
```
|
||||
|
||||
## Field Inheritance
|
||||
|
||||
Inheritable: `name`, `main`, `compatibility_date`, `routes`, `triggers`
|
||||
Non-inheritable (define per env): `vars`, bindings (KV, D1, R2, etc.)
|
||||
|
||||
## Environments
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"name": "my-worker",
|
||||
"vars": { "ENV": "dev" },
|
||||
"env": {
|
||||
"production": {
|
||||
"name": "my-worker-prod",
|
||||
"vars": { "ENV": "prod" },
|
||||
"route": { "pattern": "example.com/*", "zone_name": "example.com" }
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Deploy: `wrangler deploy --env production`
|
||||
|
||||
## Routing
|
||||
|
||||
```jsonc
|
||||
// Custom domain (recommended)
|
||||
{ "routes": [{ "pattern": "api.example.com", "custom_domain": true }] }
|
||||
|
||||
// Zone-based
|
||||
{ "routes": [{ "pattern": "api.example.com/*", "zone_name": "example.com" }] }
|
||||
|
||||
// workers.dev
|
||||
{ "workers_dev": true }
|
||||
```
|
||||
|
||||
## Bindings
|
||||
|
||||
```jsonc
|
||||
// Variables
|
||||
{ "vars": { "API_URL": "https://api.example.com" } }
|
||||
|
||||
// KV
|
||||
{ "kv_namespaces": [{ "binding": "CACHE", "id": "abc123" }] }
|
||||
|
||||
// D1
|
||||
{ "d1_databases": [{ "binding": "DB", "database_id": "abc-123" }] }
|
||||
|
||||
// R2
|
||||
{ "r2_buckets": [{ "binding": "ASSETS", "bucket_name": "my-assets" }] }
|
||||
|
||||
// Durable Objects
|
||||
{ "durable_objects": {
|
||||
"bindings": [{
|
||||
"name": "COUNTER",
|
||||
"class_name": "Counter",
|
||||
"script_name": "my-worker" // Required for external DOs
|
||||
}]
|
||||
} }
|
||||
{ "migrations": [{ "tag": "v1", "new_sqlite_classes": ["Counter"] }] }
|
||||
|
||||
// Service Bindings
|
||||
{ "services": [{ "binding": "AUTH", "service": "auth-worker" }] }
|
||||
|
||||
// Queues
|
||||
{ "queues": {
|
||||
"producers": [{ "binding": "TASKS", "queue": "task-queue" }],
|
||||
"consumers": [{ "queue": "task-queue", "max_batch_size": 10 }]
|
||||
} }
|
||||
|
||||
// Vectorize
|
||||
{ "vectorize": [{ "binding": "VECTORS", "index_name": "embeddings" }] }
|
||||
|
||||
// Hyperdrive (requires nodejs_compat_v2 for pg/postgres)
|
||||
{ "hyperdrive": [{ "binding": "HYPERDRIVE", "id": "hyper-id" }] }
|
||||
{ "compatibility_flags": ["nodejs_compat_v2"] } // For pg/postgres
|
||||
|
||||
// Workers AI
|
||||
{ "ai": { "binding": "AI" } }
|
||||
|
||||
// Workflows
|
||||
{ "workflows": [{ "binding": "WORKFLOW", "name": "my-workflow", "class_name": "MyWorkflow" }] }
|
||||
|
||||
// Secrets Store (centralized secrets)
|
||||
{ "secrets_store": [{ "binding": "SECRETS", "id": "store-id" }] }
|
||||
|
||||
// Constellation (AI inference)
|
||||
{ "constellation": [{ "binding": "MODEL", "project_id": "proj-id" }] }
|
||||
```
|
||||
|
||||
## Workers Assets (Static Files)
|
||||
|
||||
Recommended for serving static files (replaces old `site` config).
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"assets": {
|
||||
"directory": "./public",
|
||||
"binding": "ASSETS",
|
||||
"html_handling": "auto-trailing-slash", // or "none", "force-trailing-slash"
|
||||
"not_found_handling": "single-page-application" // or "404-page", "none"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Access in Worker:
|
||||
```typescript
|
||||
export default {
|
||||
async fetch(request, env) {
|
||||
// Try serving static asset first
|
||||
const asset = await env.ASSETS.fetch(request);
|
||||
if (asset.status !== 404) return asset;
|
||||
|
||||
// Custom logic for non-assets
|
||||
return new Response("API response");
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Placement
|
||||
|
||||
Control where Workers run geographically.
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"placement": {
|
||||
"mode": "smart" // or "off"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- `"smart"`: Run Worker near data sources (D1, Durable Objects) to reduce latency
|
||||
- `"off"`: Default distribution (run everywhere)
|
||||
|
||||
## Auto-Provisioning (Beta)
|
||||
|
||||
Omit resource IDs - Wrangler creates them and writes back to config on deploy.
|
||||
|
||||
```jsonc
|
||||
{ "kv_namespaces": [{ "binding": "MY_KV" }] } // No id - auto-provisioned
|
||||
```
|
||||
|
||||
After deploy, ID is added to config automatically.
|
||||
|
||||
## Advanced
|
||||
|
||||
```jsonc
|
||||
// Cron Triggers
|
||||
{ "triggers": { "crons": ["0 0 * * *"] } }
|
||||
|
||||
// Observability (tracing)
|
||||
{ "observability": { "enabled": true, "head_sampling_rate": 0.1 } }
|
||||
|
||||
// Runtime Limits
|
||||
{ "limits": { "cpu_ms": 100 } }
|
||||
|
||||
// Browser Rendering
|
||||
{ "browser": { "binding": "BROWSER" } }
|
||||
|
||||
// mTLS Certificates
|
||||
{ "mtls_certificates": [{ "binding": "CERT", "certificate_id": "cert-uuid" }] }
|
||||
|
||||
// Logpush (stream logs to R2/S3)
|
||||
{ "logpush": true }
|
||||
|
||||
// Tail Consumers (process logs with another Worker)
|
||||
{ "tail_consumers": [{ "service": "log-worker" }] }
|
||||
|
||||
// Unsafe bindings (access to arbitrary bindings)
|
||||
{ "unsafe": { "bindings": [{ "name": "MY_BINDING", "type": "plain_text", "text": "value" }] } }
|
||||
```
|
||||
|
||||
## See Also
|
||||
|
||||
- [README.md](./README.md) - Overview and commands
|
||||
- [api.md](./api.md) - Programmatic API
|
||||
- [patterns.md](./patterns.md) - Workflows
|
||||
- [gotchas.md](./gotchas.md) - Common issues
|
||||
Reference in New Issue
Block a user