Wrangler commands
Wrangler offers a number of commands to manage your Cloudflare Workers.
init- Create a skeleton Wrangler project, including thewrangler.tomlfile.dev- Start a local server for developing your Worker.publish- Publish your Worker to Cloudflare.kv:namespace- Manage Workers KV namespaces.kv:key- Manage key-value pairs within a Workers KV namespace.kv:bulk- Manage multiple key-value pairs within a Workers KV namespace in batches.r2 bucket- Manage Workers R2 buckets.secret- Manage the secret variables for a Worker.tail- Start a session to livestream logs from a deployed Worker.pages- Configure Cloudflare Pages.login- Authorize Wrangler with your Cloudflare account using OAuth.logout- Remove Wrangler’s authorization for accessing your account.
init
Create a skeleton Wrangler project, including the wrangler.toml file.
$ wrangler init [NAME] [-y / --yes]
NAMEstring- The name of the Workers project. This is both the directory name and
nameproperty in the generatedwrangler.tomlconfiguration file.
- The name of the Workers project. This is both the directory name and
--yesboolean- Answer yes to any prompts for new projects.
dev
Start a local server for developing your Worker.
$ wrangler dev [SCRIPT] [OPTIONS]
SCRIPTstring- The path to an entry point for your Worker.
--namestring- Name of the Worker.
--envstring- Perform on a specific environment.
--compatibility-datestring- Date to use for compatibility checks.
--compatibility-flags,--compatibility-flagboolean[]- Flags to use for compatibility checks.
--latestboolean- Use the latest version of the Workers runtime.
--ipstring- IP address to listen on, defaults to
localhost.
- IP address to listen on, defaults to
--portnumber- Port to listen on.
--inspector-portnumber- Port for devtools to connect to.
--routes,--routestring[]- Routes to upload.
--hoststring- Host to forward requests to, defaults to the zone of project.
--local-protocol“http”|“https”- Protocol to listen to requests on.
--sitestring- Root folder of static assets for Workers Sites.
--site-includestring[]- Array of
.gitignore-style patterns that match file or directory names from the sites directory. Only matched items will be uploaded.
- Array of
--site-excludestring[]- Array of
.gitignore-style patterns that match file or directory names from the sites directory. Matched items will not be uploaded.
- Array of
--upstream-protocol“http”|“https”- Protocol to forward requests to host on.
--tsconfigstring- Path to a custom
tsconfig.jsonfile.
- Path to a custom
--localboolean- Run the preview of the Worker directly on your local machine.
--minifyboolean- Minify the script.
The wrangler dev command that establishes a connection between localhost and a Cloudflare server that hosts your Worker in development. This allows full access to Workers KV and Durable Objects. wrangler dev is a way to easily test your Worker while developing.
~/my-worker $ wrangler dev⬣ Listening at http://localhost:8787╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮│ [b] open a browser, [d] open Devtools, [l] turn on local mode, [c] clear console, [x] to exit │╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯With wrangler dev running, you can send HTTP requests to localhost:8787 and your Worker should execute as expected. You will also see console.log messages and exceptions appearing in your terminal.
publish
Publish your Worker to Cloudflare.
$ wrangler publish [SCRIPT] [OPTIONS]
SCRIPTstring- The path to an entry point for your Worker.
--namestring- Name of the Worker.
--envstring- Perform on a specific environment.
--outdirstring- Path to directory where Wrangler will write the bundled Worker files.
--compatibility-datestring- Date to use for compatibility checks.
--compatibility-flags,--compatibility-flagboolean[]- Flags to use for compatibility checks.
--latestboolean- Use the latest version of the Workers runtime.
--sitestring- Root folder of static assets for Workers Sites.
--site-includestring[]- Array of
.gitignore-style patterns that match file or directory names from the sites directory. Only matched items will be uploaded.
- Array of
--site-excludestring[]- Array of
.gitignore-style patterns that match file or directory names from the sites directory. Matched items will not be uploaded.
- Array of
--triggers,--schedule,--schedulesstring[]- Cron schedules to attach to the published Worker.
--routes,--routestring[]- Routes where this Worker will be published.
--tsconfigstring- Path to a custom
tsconfig.jsonfile.
- Path to a custom
--minifyboolean- Minify the bundled script before publishing.
--dry-runboolean
kv:namespace
Manage Workers KV namespaces.
create
Create a new namespace.
$ wrangler kv:namespace create <NAMESPACE> [OPTIONS]
NAMESPACEstring- The name of the new namespace.
--envstring- Perform on a specific environment.
--previewboolean- Interact with a preview namespace (the
preview_idvalue).
- Interact with a preview namespace (the
list
List all KV namespaces associated with the current account ID.
$ wrangler kv:namespace list
delete
Delete a given namespace.
$ wrangler kv:namespace delete [OPTIONS]
--bindingstring- The binding name of the namespace, as stored in the
wrangler.tomlfile, to delete.
- The binding name of the namespace, as stored in the
--namespace-idstring- The ID of the namespace to delete.
--envstring- Perform on a specific environment.
--previewboolean- Interact with a preview namespace instead of production.
kv:key
Manage key-value pairs within a Workers KV namespace.
put
Write a single key-value pair to a particular namespace.
$ wrangler kv:key put <KEY> [VALUE] [OPTIONS]
KEYstring- The key to write to.
VALUEstring- The value to write.
--path- When defined, the value is loaded from the file at
--pathrather than reading it from theVALUEargument. This is ideal for security-sensitive operations because it avoids saving keys and values into your terminal history.
- When defined, the value is loaded from the file at
--bindingstring- The binding name of the namespace, as stored in the
wrangler.tomlfile, to delete.
- The binding name of the namespace, as stored in the
--namespace-idstring- The ID of the namespace to delete.
--envstring- Perform on a specific environment.
--previewboolean- Interact with a preview namespace instead of production.
--ttlnumber- The lifetime (in number of seconds) that the key-value pair should exist before expiring. Must be at least
60seconds. This option takes precedence over theexpirationoption.
- The lifetime (in number of seconds) that the key-value pair should exist before expiring. Must be at least
--expirationnumber- The timestamp, in UNIX seconds, indicating when the key-value pair should expire.
list
Output a list of all keys in a given namespace.
$ wrangler kv:key list [OPTIONS]
--bindingstring- The binding name of the namespace, as stored in the
wrangler.tomlfile, to delete.
- The binding name of the namespace, as stored in the
--namespace-idstring- The ID of the namespace to delete.
--envstring- Perform on a specific environment.
--previewboolean- Interact with a preview namespace instead of production.
--prefixstring- Only list keys that begin with the given prefix.
get
Read a single value by key from the given namespace.
$ wrangler kv:key get <KEY> [OPTIONS]
KEYstring- The key value to get.
--bindingstring- The binding name of the namespace, as stored in the
wrangler.tomlfile, to delete.
- The binding name of the namespace, as stored in the
--namespace-idstring- The ID of the namespace to delete.
--envstring- Perform on a specific environment.
--previewboolean- Interact with a preview namespace instead of production.
delete
Remove a single key value pair from the given namespace.
$ wrangler kv:key delete <KEY> [OPTIONS]
KEYstring- The key value to get.
--bindingstring- The binding name of the namespace, as stored in the
wrangler.tomlfile, to delete.
- The binding name of the namespace, as stored in the
--namespace-idstring- The ID of the namespace to delete.
--envstring- Perform on a specific environment.
--previewboolean- Interact with a preview namespace instead of production.
kv:bulk
Manage multiple key-value pairs within a Workers KV namespace in batches.
put
Write a JSON file containing an array of key-value pairs to the given namespace.
$ wrangler kv:bulk put <FILENAME> [OPTIONS]
FILENAMEstring- The JSON file containing an array of key-value pairs to write to the namespace.
--bindingstring- The binding name of the namespace, as stored in the
wrangler.tomlfile, to delete.
- The binding name of the namespace, as stored in the
--namespace-idstring- The ID of the namespace to delete.
--envstring- Perform on a specific environment.
--previewboolean- Interact with a preview namespace instead of production.
This command takes a JSON file as an argument with a list of key-value pairs to upload. An example of JSON input:
[ { "key": "test_key", "value": "test_value", "expiration_ttl": 3600 }
]
KV namespace values can only store strings. In order to save complex a value, stringify it to JSON:
[ { "key": "test_key", "value": "{\"name\": \"test_value\"}", "expiration_ttl": 3600 }
]
Here is the full schema for key-value entries uploaded via the bulk API:
keystring- The key’s name. The name may be 512 bytes maximum. All printable, non-whitespace characters are valid.
valuestring- The UTF-8 encoded string to be stored, up to 10 MB in length.
expirationnumber- The time, measured in number of seconds since the UNIX epoch, at which the key should expire.
expiration_ttlnumber- The number of seconds the document should exist before expiring. Must be at least
60seconds.
- The number of seconds the document should exist before expiring. Must be at least
base64boolean- When true, the server will decode the value as base64 before storing it. This is useful for writing values that would otherwise be invalid JSON strings, such as images. Defaults to
false.
- When true, the server will decode the value as base64 before storing it. This is useful for writing values that would otherwise be invalid JSON strings, such as images. Defaults to
delete
Delete all keys read from a JSON file within a given namespace.
$ wrangler kv:bulk delete <FILENAME> [OPTIONS]
FILENAMEstring- The JSON file containing an array of keys to delete from the namespace.
--bindingstring- The binding name of the namespace, as stored in the
wrangler.tomlfile, to delete.
- The binding name of the namespace, as stored in the
--namespace-idstring- The ID of the namespace to delete.
--envstring- Perform on a specific environment.
--previewboolean- Interact with a preview namespace instead of production.
This command takes a JSON file as an argument containing an array of keys to delete. Here is an example of the JSON input:
["test_key_1", "test_key_2"]
r2 bucket
Interact with buckets in an R2 store.
create
Create a new R2 bucket.
$ wrangler r2 bucket create <NAME>
NAMEstring- The name of the new R2 bucket.
delete
Delete an R2 bucket.
$ wrangler r2 bucket delete <NAME>
NAMEstring- The name of the R2 bucket to delete.
list
List R2 bucket in the current account.
$ wrangler r2 bucket list
secret
Manage the secret variables for a Worker.
put
Create or replace a secret for a Worker.
$ wrangler secret put <NAME> [OPTIONS]
NAMEstring- The variable name for this secret to be accessed in the Worker.
--envstring- Perform on a specific environment.
delete
Delete a secret for a Worker.
$ wrangler secret delete <NAME> [OPTIONS]
NAMEstring- The variable name for this secret to be accessed in the Worker.
--envstring- Perform on a specific environment.
list
List the names of all the secrets for a Worker.
$ wrangler secret list [OPTIONS]
--envstring- Perform on a specific environment
tail
Start a session to livestream logs from a deployed Worker.
$ wrangler tail <NAME> [OPTIONS]
NAMEstring--format“json”|“pretty”- The format of the log entries.
--status“ok”|“error”|“canceled”- Filter by invocation status.
--headerstring- Filter by HTTP header.
--methodstring- Filter by HTTP method.
--sampling-ratenumber- Add a fraction of requests to log sampling rate (between
0and1).
- Add a fraction of requests to log sampling rate (between
--searchstring- Filter by a text match in
console.logmessages.
- Filter by a text match in
--ip(string|“self”)[]- Filter by the IP address the request originates from. Use
"self"to show only messages from your own IP.
- Filter by the IP address the request originates from. Use
After starting wrangler tail, you will receive a live feed of console and exception logs for each request your Worker receives.
pages
Configure Cloudflare Pages.
dev
Develop your full stack Pages application locally.
$ wrangler pages dev [<DIRECTORY>] [OPTIONS] [-- <COMMAND..>]
DIRECTORYstring- The directory of static assets to serve.
COMMAND..string- The proxy command(s) to run.
--localboolean- Run on my machine.
--portnumber- The port to listen on (serve from).
--proxynumber- The port to proxy (where the static assets are served).
--script-pathstring- The location of the single Worker script if not using functions.
--bindingstring[]- Bind variable/secret (KEY=VALUE).
--kvstring[]- KV namespace to bind.
--dostring[]- Durable Object to bind (NAME=CLASS).
--live-reloadboolean- Auto reload HTML pages when change is detected.
project list
List your Pages projects.
$ wrangler pages project list
project create
Create a new Cloudflare Pages project.
$ wrangler pages project create [PROJECT-NAME] [OPTIONS]
PROJECT-NAMEstring- The name of your Pages project.
--production-branchstring- The name of the production branch of your project.
deployment list
List deployments in your Cloudflare Pages project.
$ wrangler pages deployment list [OPTIONS]
--project-namestring- The name of the project you would like to list deployments for.
publish
Deploy a directory of static assets as a Pages deployment.
$ wrangler pages publish [DIRECTORY] [OPTIONS]
DIRECTORYstring- The directory of static files to upload.
--project-namestring- The name of the project you want to deploy to.
--branchstring- The name of the branch you want to deploy to.
--commit-hashstring- The SHA to attach to this deployment.
--commit-messagestring- The commit message to attach to this deployment.
--commit-dirtyboolean- Whether or not the workspace should be considered dirty for this deployment.
login
Authorize Wrangler with your Cloudflare account using OAuth. This will open a login page in your browser and request your account access permissions.
$ wrangler login [OPTIONS]
--scopes-liststring- List all the available OAuth scopes with descriptions.
--scopes $SCOPESstring- Allows to choose your set of OAuth scopes. The set of scopes must be entered in a whitespace-separated list,
for example,
$ wrangler login --scopes account:read user:read.
- Allows to choose your set of OAuth scopes. The set of scopes must be entered in a whitespace-separated list,
for example,
logout
Remove Wrangler’s authorization for accessing your account. This command will invalidate your current OAuth token.
$ wrangler logout
If you are using CLOUDFLARE_API_TOKEN instead of OAuth, and you can logout by deleting your API token in the Cloudflare dashboard:
- Log in to the Cloudflare dashboard.
- Go to Overview > Get your API token in the right-side menu.
- Select the three-dot menu on your Wrangler token.
- Select Delete.