Deployment
To deploy your Flareact site to Cloudflare, run:
yarn deploy
Behind the scenes, Flareact bundles your client assets in a production-ready format and then runs wrangler publish.
Deploying to a custom route
In your wrangler.toml file, you can use specify a route for your site instead of the workers_dev default host.
To set a route, change workers_dev = false and specify your route:
workers_dev = false
route = "flareact.com/*"
At this point, you'll also be required to include a zone_id. If you don't want to include this in your version control (e.g. your project is open-source), you can define it in a local .env file which is ignored by Git:
CF_ZONE_ID=<your zone ID>
CF_ACCOUNT_ID=<your account ID>
Note:: Per the Cloudflare Docs, if your route is configured to a hostname, you will need to add a DNS record to Cloudflare to ensure that the hostname can be resolved externally. If your Worker acts as your origin (the response comes directly from a Worker), you should enter a placeholder (dummy) AAAA record pointing to 100::, which is the reserved IPv6 discard prefixOpen external link.
Deploying to environments
Cloudflare allows you to define additional environments for your Workers site.
After adding a new environment to your wrangler.toml file:
[env.staging]
name = "your-site-staging"
workers_dev = true
You can pass the --env <NAME> flag to the yarn deploy command:
yarn deploy --env staging
Deploying from GitHub Actions
To deploy from GitHub Actions, you can use the wrangler action.
In your project, create a .github/workflows/deploy.yml file:
name: Deploy
on:
- push
jobs:
deploy:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: 12
- run: yarn install
- run: yarn build
- name: Publish
uses: cloudflare/wrangler-action@1.2.0
with:
apiToken: ${{ secrets.CF_API_TOKEN }}
env:
CF_ACCOUNT_ID: ${{ secrets.CF_ACCOUNT_ID }}
IS_WORKER: true
Optionally update your push: directive to include only certain branches.
You also might want to add a CF_ZONE_ID if you're deploying to a custom domain.