Wrangler
Patch Changes
#8103
a025ad2Thanks @emily-shen! - fix: fix bug wherewrangler secret list --format=jsonwas printing the wrangler banner.Updated dependencies []:
Minor Changes
#7990
b1966dfThanks @cmsparks! - Add WRANGLER_CI_OVERRIDE_NAME for Workers CI#8028
b2dca9aThanks @emily-shen! - feat: Also log when no bindings are found.We currently print a worker's bindings during dev, versions upload and deploy. This just also prints something when there's no bindings found, in case you were expecting bindings.
#8037
71fd250Thanks @WillTaylorDev! - Provides unsafe.metadata configurations when using wrangler versions secret put.
Patch Changes
#8058
1f80d69Thanks @WillTaylorDev! - Bugfix: Modified versions secret put to inherit all known bindings, which circumvents a limitation in the API which does not return all fields for all bindings.#7986
88514c8Thanks @andyjessop! - docs: clarifies that local resources are "simulated locally" or "connected to remote resource", and adds console messages to help explain local dev#8008
9d08af8Thanks @ns476! - Add support for Images bindings (in private beta for now), with optional local support for platforms where Sharp is available.#7769
6abe69cThanks @cmackenzie1! - Adds the following new option forwrangler pipelines createandwrangler pipelines updatecommands:--cors-origins CORS origin allowlist for HTTP endpoint (use * for any origin) [array]#7290
0c0374cThanks @emily-shen! - fix: add support for workers with assets when running multiple workers in onewrangler devinstancehttps://github.com/cloudflare/workers-sdk/pull/7251 added support for running multiple Workers in one
wrangler dev/miniflare session. e.g.wrangler dev -c wrangler.toml -c ../worker2/wrangler.toml, which among other things, allowed cross-service RPC to Durable Objects.However this did not work in the same way as production when there was a Worker with assets - this PR should fix that.
#7769
6abe69cThanks @cmackenzie1! - Rename wrangler pipelines <create|update> flagsThe following parameters have been renamed:
Previous Name New Name access-key-id r2-access-key-id secret-access-key r2-secret-access-key transform transform-worker r2 r2-bucket prefix r2-prefix binding enable-worker-binding http enable-http authentication require-http-auth filename file-template filepath partition-template #8012
c412a31Thanks @mtlemilio! - Use fetchPagedListResult when listing Hyperdrive configs from the APIThis fixes an issue where only 20 configs were being listed.
#8077
60310cdThanks @emily-shen! - feat: add telemetry to experimental auto-provisioning
Patch Changes
#7988
444a630Thanks @edmundhung! - Fix #7985.This reverts the changes on #7945 that caused compatibility issues with Node 16 due to the introduction of
sharp.
Patch Changes
#7981
e2b3306Thanks @WalshyDev! - Fixes a regression introduced in Wrangler 3.107.0 in which[assets]was not being inherited from the top-level environment.Updated dependencies [
ab49886]:
Minor Changes
- #7897
34f9797Thanks @WillTaylorDev! - chore: providesrun_worker_firstfor Worker-script-first configuration. Deprecatesexperimental_serve_directly.
Patch Changes
#7945
d758215Thanks @ns476! - Add Images binding (in private beta for the time being)#7947
f57bc4eThanks @dario-piotrowicz! - fix: avoidgetPlatformProxylogging twice that it is using vars defined in.dev.varsfileswhen
getPlatformProxyis called and it retrieves values from.dev.varsfiles, it logs twice a message like:Using vars defined in .dev.vars, the changes here make sure that in such cases this log only appears once#7889
38db4edThanks @emily-shen! - feat: add experimental resource auto-provisioning to versions upload#7864
de6fa18Thanks @dario-piotrowicz! - Update theunstable_getMiniflareWorkerOptionstypes to always include anenvparameter.The
unstable_getMiniflareWorkerOptionstypes, when accepting a config object as the first argument, didn't accept a secondenvargument. The changes here make sure they do, since theenvis still relevant for picking up variables from.dev.varsfiles.#7964
bc4d6c8Thanks @LuisDuarte1! - Fix scripts binding to a workflow in a different script overriding workflow configUpdated dependencies [
cf4f47a]:
Minor Changes
#7856
2b6f149Thanks @emily-shen! - feat: add sanitised error messages to Wrangler telemetryError messages that have been audited for potential inclusion of personal information, and explicitly opted-in, are now included in Wrangler's telemetry collection. Collected error messages will not include any filepaths, user input or any other potentially private content.
#7900
bd9228eThanks @vicb! - chore(wrangler): update unenv dependency versionunenv@2.0.0-rc.1allows using the workerd implementation for the Node modulesnet,timers, andtimers/promises. Seeunjs/unenv#396.
Patch Changes
#7904
50b13f6Thanks @WalshyDev! - fix: validation for R2 bucket names, the regex was wrongly rejecting buckets starting with a number and the message wasn't as clear as it could be on what was going wrong.#7895
134d61dThanks @jahands! - Fix regression in retryOnAPIFailure preventing any requests from being retriedAlso fixes a regression in pipelines that prevented 401 errors from being retried when waiting for an API token to become active.
#7879
5c02e46Thanks @andyjessop! - Fix to not require local connection string when using Hyperdrive and wrangler dev --remote#7860
13ab591Thanks @vicb! - refactor(wrangler): make JSON parsing independent of NodeSwitch
jsonc-parserto parse json:JSON.parse()exception messages are not stable across Node versions- While
jsonc-parseris used, JSONC specific syntax is disabled
Updated dependencies []:
Patch Changes
#7884
fd5a455Thanks @emily-shen! - feat: make experiemntal auto-provisioning non-interactive by default.#7811
7d138d9Thanks @joshthoward! - Fix RPC method invocations showing up as unknown eventsUpdated dependencies [
40f89a9]:
Minor Changes
#7466
e5ebdb1Thanks @Ltadrian! - feat: implement thewrangler cert uploadcommandThis command allows users to upload a mTLS certificate/private key or certificate-authority certificate chain.
For uploading mTLS certificate, run:
wrangler cert upload mtls-certificate --cert cert.pem --key key.pem --name MY_CERT
For uploading CA certificate chain, run:
wrangler cert upload certificate-authority --ca-cert server-ca.pem --name SERVER_CA
Patch Changes
#7867
bdc7958Thanks @penalosa! - Revert https://github.com/cloudflare/workers-sdk/pull/7816. This feature added support for the ASSETS bindings to thegetPlatformProxy()API, but caused a regression when runningnpm run previewin newly generated Workers Assets projects.#7868
78a9a2dThanks @penalosa! - Revert "Hyperdrive dev remote fix". This PR includes e2e tests that were not run before merging, and are currently failing.Updated dependencies []:
Patch Changes
- #7798
a1ff045Thanks @CarmenPopoviciu! - Reverts #7720 as it introduced breakage in some of the C3 templates (eg. Nuxt)
Minor Changes
#5086
8faf2c0Thanks @dario-piotrowicz! - add--strict-varsoption towrangler typesadd a new
--strict-varsoption towrangler typesthat developers can (by setting the flag tofalse) use to disable the default strict/literal types generation for their variablesopting out of strict variables can be useful when developers change often their
varsvalues, even more so when multiple environments are involvedExample
With a toml containing:
[vars] MY_VARIABLE = "production_value" MY_NUMBERS = [1, 2, 3] [env.staging.vars] MY_VARIABLE = "staging_value" MY_NUMBERS = [7, 8, 9]the
wrangler typescommand would generate the following interface:interface Env { MY_VARIABLE: "production_value" | "staging_value"; MY_NUMBERS: [1,2,3] | [7,8,9]; }while
wrangler types --strict-vars=falsewould instead generate:interface Env { MY_VARIABLE: string; MY_NUMBERS: number[]; }(allowing the developer to easily change their toml variables without the risk of breaking typescript types)
Patch Changes
#7720
902e3afThanks @vicb! - chore(wrangler): use the unenv preset from@cloudflare/unenv-preset#7760
19228e5Thanks @vicb! - chore: update unenv dependency version#7735
e8aaa39Thanks @penalosa! - Unwrap the error cause when available to send to Sentry#5086
8faf2c0Thanks @dario-piotrowicz! - fix: widen multi-envvarstypes inwrangler typesCurrently, the type generated for
varsis a string literal consisting of the value of the variable in the top level environment. If multiple environments are specified this wrongly restricts the type, since the variable could contain any of the values from each of the environments.For example, given a
wrangler.tomlcontaining the following:[vars] MY_VAR = "dev value" [env.production.vars] MY_VAR = "prod value"running
wrangler typeswould generate:interface Env { MY_VAR: "dev value"; }making typescript incorrectly assume that
MY_VARis always going to be"dev value"after these changes, the generated interface would instead be:
interface Env { MY_VAR: "dev value" | "prod value"; }#7733
dceb196Thanks @emily-shen! - feat: pull resource names for provisioning from config if providedUses
database_nameandbucket_namefor provisioning if specified. For R2, this only happens if there is not a bucket with that name already. Also respects R2jurisdictionif provided.Updated dependencies []:
Minor Changes
- #7592
f613276Thanks @garrettgu10! - New filter validation logic supporting set and range queries in Vectorize CLI
Patch Changes
#7750
df0e5beThanks @andyjessop! - bug: Removes the (local) tag on Vectorize bindings in the console output ofwrangler dev, and adds-in the same tag for Durable Objects (which are emulated locally inwrangler dev).#7706
c63f1b0Thanks @penalosa! - Remove the server-based dev registry in favour of the more stable file-based dev registry. There should be no user-facing impact.Updated dependencies [
8e9aa40]:
Minor Changes
#7534
7c8ae1cThanks @cmackenzie1! - feat: Use OAuth flow to generate R2 tokens for Pipelines#7674
45d1d1eThanks @Ankcorn! - Add support for env files to wrangler secret bulk i.e..dev.varsRun
wrangler secret bulk .dev.varsto add the env file//.dev.vars KEY=VALUE KEY_2=VALUEThis will upload the secrets KEY and KEY_2 to your worker
#7442
e4716ccThanks @petebacondarwin! - feat: add support for redirecting Wrangler to a generated config when running deploy-related commandsThis new feature is designed for build tools and frameworks to provide a deploy-specific configuration, which Wrangler can use instead of user configuration when running deploy-related commands. It is not expected that developers of Workers will need to use this feature directly.
Affected commands
The commands that use this feature are:
wrangler deploywrangler devwrangler versions uploadwrangler versions deploywrangler pages deploywrangler pages buildwrangler pages build-env
Config redirect file
When running these commands, Wrangler will look up the directory tree from the current working directory for a file at the path
.wrangler/deploy/config.json. This file must contain only a single JSON object of the form:{ "configPath": "../../path/to/wrangler.json" }When this file exists Wrangler will follow the
configPath(relative to the.wrangler/deploy/config.jsonfile) to find an alternative Wrangler configuration file to load and use as part of this command.When this happens Wrangler will display a warning to the user to indicate that the configuration has been redirected to a different file than the user's configuration file.
Custom build tool example
A common approach that a build tool might choose to implement.
The user writes code that uses Cloudflare Workers resources, configured via a user
wrangler.tomlfile.name = "my-worker" main = "src/index.ts" [[kv_namespaces]] binding = "<BINDING_NAME1>" id = "<NAMESPACE_ID1>"Note that this configuration points
mainat user code entry-point.The user runs a custom build, which might read the
wrangler.tomlto find the entry-point:> my-tool buildThis tool generates a
distdirectory that contains both compiled code and a new deployment configuration file, but also a.wrangler/deploy/config.jsonfile that redirects Wrangler to this new deployment configuration file:- dist - index.js - wrangler.json - .wrangler - deploy - config.jsonThe
dist/wrangler.jsonwill contain:{ "name": "my-worker", "main": "./index.js", "kv_namespaces": [ { "binding": "<BINDING_NAME1>", "id": "<NAMESPACE_ID1>" } ] }And the
.wrangler/deploy/config.jsonwill contain:{ "configPath": "../../dist/wrangler.json" }
#7685
9d2740aThanks @vicb! - allow overriding the unenv preset.By default wrangler uses the bundled unenv preset.
Setting
WRANGLER_UNENV_RESOLVE_PATHSallow to use another version of the preset. Those paths are used when resolving the unenv module identifiers to absolute paths. This can be used to test a development version.#7694
f3c2f69Thanks @joshthoward! - Default wrangler d1 export to --local rather than failing
Patch Changes
#7456
ff4e77eThanks @andyjessop! - chore: removes --experimental-versions flag, as versions is now GA.#7712
6439347Thanks @penalosa! - Remove CF-Connecting-IP for requests to the edge preview#7703
e771fe9Thanks @petebacondarwin! - include the top level Worker name in the parsed config structure#7576
773bda8Thanks @cmackenzie1! - Remove defaults forbatch-max-*pipeline parameters and define value ranges
Minor Changes
#7604
6c2f173Thanks @CarmenPopoviciu! - feat: Capture Workers with static assets in the telemetry dataWe want to measure accurately what this number of Workers + Assets projects running in remote mode is, as this number will be a very helpful data point down the road, when more decisions around remote mode will have to be taken.
These changes add this kind of insight to our telemetry data, by capturing whether the command running is in the context of a Workers + Assets project.
N.B. With these changes in place we will be capturing the Workers + Assets context for all commands, not just wrangler dev --remote.
Patch Changes
#7581
cac7fa6Thanks @vicb! - chore(wrangler): update unenv dependency versionunenv now uses the workerd implementation on node:dns See the unjs/unenv#376
#7625
d8fb032Thanks @vicb! - feat(wrangler): use unenv builtin dependency resolutionMoving away from
require.resolve()to handle unenv aliased packages. Using the unenv builtin resolution will allow us to drop the .cjs file from the preset and to override the base path so that we can test the dev version of the preset.#7533
755a27cThanks @danielgek! - Add warning about the browser rendering not available on local#7614
8abb43fThanks @vicb! - chore(wrangler): update unenv dependency versionThe updated unenv contains a fix for the module resolution, see https://github.com/unjs/unenv/pull/378. That bug prevented us from using unenv module resolution, see https://github.com/cloudflare/workers-sdk/pull/7583.
Updated dependencies [
b4e0af1]:
Minor Changes
#7425
8757579Thanks @CarmenPopoviciu! - feat: Make DX improvements inwrangler dev --remoteWorkers + Assets projects have, in certain situations, a relatively degraded
wrangler dev --remotedeveloper experience, as opposed to Workers proper projects. This is due to the fact that, for Workers + Assets, we need to make extra API calls to:- check for asset files changes
- upload the changed assets, if any
This commit improves the
wrangler dev --remoteDX for Workers + Assets, for use cases when the User Worker/assets change while the API calls for previous changes are still in flight. For such use cases, we have put an exit early strategy in place, that drops the event handler execution of the previous changes, in favour of the handler triggered by the new changes.#7537
086a6b8Thanks @WillTaylorDev! - Provide validation around assets.experimental_serve_directly#7568
2bbcb93Thanks @WillTaylorDev! - Warn users when using smart placement with Workers + Assets andserve_directlyis set tofalse
Patch Changes
#7521
48e7e10Thanks @emily-shen! - feat: add experimental_patchConfig()experimental_patchConfig()can add to a user's config file. It preserves comments if its awrangler.jsonc. However, it is not suitable forwrangler.tomlwith comments as we cannot preserve comments on write.
Minor Changes
#7476
5124b5dThanks @WalshyDev! - feat: allow routing to Workers with Assets on any HTTP route, not just the root. For example,example.com/blog/*can now be used to serve assets. These assets will be served as though the assets directly were mounted to the root. For example, if you haveassets = { directory = "./public/" }, a route like"example.com/blog/*"and a file./public/blog/logo.png, this will be available atexample.com/blog/logo.png. Assets outside of directories which match the configured HTTP routes can still be accessed with the Assets binding or with a Service binding to this Worker.#7380
72935f9Thanks @CarmenPopoviciu! - Add Workers + Assets support inwrangler dev --remote
Patch Changes
#7573
fb819f9Thanks @emily-shen! - feat: add experimental_readRawConfig()Adds a Wrangler API to find and read a config file
#7549
42b9429Thanks @penalosa! - Expand metrics collection to:- Detect Pages & Workers CI
- Filter out default args (e.g.
--x-versions,--x-dev-env, and--latest) by only including args that were inargv
#7583
8def8c9Thanks @penalosa! - Revert support for custom unenv resolve path to address an issue with Wrangler failing to deploy Pages projects withnodejs_compat_v2in some cases
Minor Changes
#7522
6403e41Thanks @vicb! - feat(wrangler): allow overriding the unenv preset.By default wrangler uses the bundled unenv preset.
Setting
WRANGLER_UNENV_RESOLVE_PATHSallow to use another version of the preset. Those paths are used when resolving the unenv module identifiers to absolute paths. This can be used to test a development version.#7479
2780849Thanks @penalosa! - Accept a JSON file of the format{ name: string }[]inwrangler kv bulk delete, as well as the currentstring[]format.