2.2 KiB
2.2 KiB
C3 Usage Patterns
Quick Workflows
# TypeScript API Worker
npm create cloudflare@latest my-api -- --type=hello-world --lang=ts --deploy
# Next.js on Pages
npm create cloudflare@latest my-app -- --type=web-app --framework=next --platform=pages --ts --deploy
# Astro static site
npm create cloudflare@latest my-blog -- --type=web-app --framework=astro --platform=pages --ts
CI/CD (GitHub Actions)
- name: Deploy
run: npm run deploy
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
Non-interactive requires:
--type=<value> # Required
--no-git # Recommended (CI already in git)
--no-deploy # Deploy separately with secrets
--framework=<value> # For web-app
--ts / --no-ts # Required
Monorepo
C3 detects workspace config (package.json workspaces or pnpm-workspace.yaml).
cd packages/
npm create cloudflare@latest my-worker -- --type=hello-world --lang=ts --no-deploy
Custom Templates
# GitHub repo
npm create cloudflare@latest -- --template=username/repo
npm create cloudflare@latest -- --template=cloudflare/templates/worker-openapi
# Local path
npm create cloudflare@latest my-app -- --template=../my-template
Template requires c3.config.json:
{
"name": "my-template",
"category": "hello-world",
"copies": [{ "path": "src/" }, { "path": "wrangler.jsonc" }],
"transforms": [{ "path": "package.json", "jsonc": { "name": "{{projectName}}" }}]
}
Existing Projects
# Add Cloudflare to existing Worker
npm create cloudflare@latest . -- --type=pre-existing --existing-script=./dist/index.js
# Add to existing framework app
npm create cloudflare@latest . -- --type=web-app --framework=next --platform=pages --ts
Post-Creation Checklist
- Review
wrangler.jsonc- setcompatibility_date, verifyname - Create bindings:
wrangler kv namespace create,wrangler d1 create,wrangler r2 bucket create - Generate types:
npm run cf-typegen - Test:
npm run dev - Deploy:
npm run deploy - Set secrets:
wrangler secret put SECRET_NAME