{"id":13727140,"url":"https://github.com/lukeed/cfw","last_synced_at":"2025-10-09T18:23:52.108Z","repository":{"id":39902641,"uuid":"200443777","full_name":"lukeed/cfw","owner":"lukeed","description":"(WIP) A build and deploy utility for Cloudflare Workers.","archived":false,"fork":false,"pushed_at":"2024-09-27T06:38:05.000Z","size":133,"stargazers_count":111,"open_issues_count":4,"forks_count":3,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-23T21:17:58.921Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lukeed.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"license","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"lukeed"}},"created_at":"2019-08-04T03:11:14.000Z","updated_at":"2025-03-18T11:16:02.000Z","dependencies_parsed_at":"2024-11-14T17:33:16.633Z","dependency_job_id":"b0617fad-d0a5-4ba8-a68c-4cf97aaa461b","html_url":"https://github.com/lukeed/cfw","commit_stats":{"total_commits":134,"total_committers":1,"mean_commits":134.0,"dds":0.0,"last_synced_commit":"7aa50fbdc7c867f4778e56361e2033673719e7c6"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukeed%2Fcfw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukeed%2Fcfw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukeed%2Fcfw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lukeed%2Fcfw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lukeed","download_url":"https://codeload.github.com/lukeed/cfw/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251036943,"owners_count":21526610,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T01:03:41.314Z","updated_at":"2025-10-09T18:23:47.058Z","avatar_url":"https://github.com/lukeed.png","language":"TypeScript","funding_links":["https://github.com/sponsors/lukeed"],"categories":["TypeScript"],"sub_categories":[],"readme":"# cfw [![CI](https://github.com/lukeed/cfw/workflows/CI/badge.svg)](https://github.com/lukeed/cfw/actions) [![npm](https://badgen.now.sh/npm/v/cfw)](https://npmjs.org/package/cfw)\n\n\u003e A build and deploy utility for Cloudflare Workers.\n\n---\n\n\u003cp align=\"center\"\u003e\u003cstrong\u003eWORK IN PROGRESS\u003c/strong\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cstrong\u003eStatus:\u003c/strong\u003e Functional, but incomplete.\u003c/p\u003e\n\n---\n\n## Credentials\n\nThere are two approaches in providing `cfw` with a set of Cloudflare credentials:\n\n### Persisted\n\nCreate a `~/.cfw/config` file, where `~` is that path to your home directory. Inside, you'll store your credentials under different \"profile\" namespaces. (If you're familiar, this is very similar to an AWS credentials file.) An example file may look like this:\n\n```ini\n[personal]\nCLOUDFLARE_AUTH_EMAIL = hello@me.com\nCLOUDFLARE_ACCOUNTID = ACCOUNTID_VALUE\nCLOUDFLARE_AUTH_KEY = GLOBAL_API_KEY\nCLOUDFLARE_ZONEID = ZONEID_VALUE\n```\n\nIn this case, we have a \"personal\" profile containing our personal account credentials. You can define multiple credential groups by repeating this template as needed, using different profile names.\n\n```ini\n[personal]\nCLOUDFLARE_AUTH_EMAIL = hello@me.com\n# ...\n\n[work]\nCLOUDFLARE_AUTH_EMAIL = hello@company.com\n# ...\n```\n\nAdditionally, all credential key names may be lowercased.\n\n***Default Profile***\n\nIf a profile named `[default]` exists, then `cfw` will auto-load that credentials group when no there is no profile configured.\n\n***Selecting a Profile***\n\nYou may use a `profile` key inside your configuration file, or define `--profile` when running an `cfw` command.\n\n\u003c!-- Please see [`config.proile`](#TODO) for more information. --\u003e\n\n### Environment Variables\n\nThe same keys found within your credentials file may be used again as environment variables.\n\nWhen defined, an environment variable takes priority over all other configuration avenues.\n\n* `CLOUDFLARE_ACCOUNTID` – your account identifier; alias of `config.accountid`\n* `CLOUDFLARE_AUTH_EMAIL` – your account email address; alias of `config.email`\n* `CLOUDFLARE_AUTH_KEY` – your account's global API key; alias of `config.authkey`\n* `CLOUDFLARE_ZONEID` – your domain/zone's identifier; alias of `config.zoneid`\n* `CLOUDFLARE_TOKEN` – an API access token; alias of `config.token`\n\n### Authentication\n\nIn order to successfull access your Cloudflare account's resources, you must satisfy the following requirements:\n\n1. A `CLOUDFLARE_ACCOUNTID` (or `config.accountid`) is **always required**.\n\n2. A valid token or key-pair; you have two options:\n    1. A `CLOUDFLARE_TOKEN` (or `config.token`) containing a valid [API token](https://dash.cloudflare.com/profile/api-tokens). \u003cbr\u003e_***(Recommended)*** Preferred solution, as this API token can be narrowly scoped and can be revoked at any time._\n\n    2. A valid `CLOUDFLARE_AUTH_EMAIL` _and_ `CLOUDFLARE_AUTH_KEY` combination. \u003cbr\u003e_This requires your Global API Key, which grants full access to all account resources._\n\n3. A `CLOUDFLARE_ZONEID` is **only required if** you are not deploying to a `*.workers.dev` subdomain (via `config.subdomain`).\n\nThe following profiles represent valid combinations:\n\n```ini\n[recommended]\ncloudflare_accountid = da32...\ncloudflare_token = 78a...\n# (optional) cloudflare_zoneid = b58...\n\n[other]\ncloudflare_accountid = da32...\ncloudflare_auth_email = hello@example.com\ncloudflare_auth_key = 62d...\n# (optional) cloudflare_zoneid = b58...\n```\n\n\u003c!-- TODO: auth + email vs token --\u003e\n\n\u003c!-- ## Configuration --\u003e\n\n\n## License\n\nMIT © [Luke Edwards](https://lukeed.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flukeed%2Fcfw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flukeed%2Fcfw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flukeed%2Fcfw/lists"}