Wrangler
Patch Changes
- #7798
a1ff045
Thanks @CarmenPopoviciu! - Reverts #7720 as it introduced breakage in some of the C3 templates (eg. Nuxt)
Minor Changes
#5086
8faf2c0
Thanks @dario-piotrowicz! - add--strict-vars
option towrangler types
add a new
--strict-vars
option towrangler types
that 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
vars
values, 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 types
command 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=false
would 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
902e3af
Thanks @vicb! - chore(wrangler): use the unenv preset from@cloudflare/unenv-preset
#7760
19228e5
Thanks @vicb! - chore: update unenv dependency version#7735
e8aaa39
Thanks @penalosa! - Unwrap the error cause when available to send to Sentry#5086
8faf2c0
Thanks @dario-piotrowicz! - fix: widen multi-envvars
types inwrangler types
Currently, the type generated for
vars
is 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.toml
containing the following:[vars] MY_VAR = "dev value" [env.production.vars] MY_VAR = "prod value"
running
wrangler types
would generate:interface Env { MY_VAR: "dev value"; }
making typescript incorrectly assume that
MY_VAR
is always going to be"dev value"
after these changes, the generated interface would instead be:
interface Env { MY_VAR: "dev value" | "prod value"; }
#7733
dceb196
Thanks @emily-shen! - feat: pull resource names for provisioning from config if providedUses
database_name
andbucket_name
for provisioning if specified. For R2, this only happens if there is not a bucket with that name already. Also respects R2jurisdiction
if provided.Updated dependencies []:
Minor Changes
- #7592
f613276
Thanks @garrettgu10! - New filter validation logic supporting set and range queries in Vectorize CLI
Patch Changes
#7750
df0e5be
Thanks @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
c63f1b0
Thanks @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
7c8ae1c
Thanks @cmackenzie1! - feat: Use OAuth flow to generate R2 tokens for Pipelines#7674
45d1d1e
Thanks @Ankcorn! - Add support for env files to wrangler secret bulk i.e..dev.vars
Run
wrangler secret bulk .dev.vars
to add the env file//.dev.vars KEY=VALUE KEY_2=VALUE
This will upload the secrets KEY and KEY_2 to your worker
#7442
e4716cc
Thanks @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 deploy
wrangler dev
wrangler versions upload
wrangler versions deploy
wrangler pages deploy
wrangler pages build
wrangler 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.json
file) 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.toml
file.name = "my-worker" main = "src/index.ts" [[kv_namespaces]] binding = "<BINDING_NAME1>" id = "<NAMESPACE_ID1>"
Note that this configuration points
main
at user code entry-point.The user runs a custom build, which might read the
wrangler.toml
to find the entry-point:> my-tool build
This tool generates a
dist
directory that contains both compiled code and a new deployment configuration file, but also a.wrangler/deploy/config.json
file that redirects Wrangler to this new deployment configuration file:- dist - index.js - wrangler.json - .wrangler - deploy - config.json
The
dist/wrangler.json
will contain:{ "name": "my-worker", "main": "./index.js", "kv_namespaces": [ { "binding": "<BINDING_NAME1>", "id": "<NAMESPACE_ID1>" } ] }
And the
.wrangler/deploy/config.json
will contain:{ "configPath": "../../dist/wrangler.json" }
#7685
9d2740a
Thanks @vicb! - allow overriding the unenv preset.By default wrangler uses the bundled unenv preset.
Setting
WRANGLER_UNENV_RESOLVE_PATHS
allow 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
f3c2f69
Thanks @joshthoward! - Default wrangler d1 export to --local rather than failing
Patch Changes
#7456
ff4e77e
Thanks @andyjessop! - chore: removes --experimental-versions flag, as versions is now GA.#7712
6439347
Thanks @penalosa! - Remove CF-Connecting-IP for requests to the edge preview#7703
e771fe9
Thanks @petebacondarwin! - include the top level Worker name in the parsed config structure#7576
773bda8
Thanks @cmackenzie1! - Remove defaults forbatch-max-*
pipeline parameters and define value ranges
Minor Changes
#7604
6c2f173
Thanks @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
cac7fa6
Thanks @vicb! - chore(wrangler): update unenv dependency versionunenv now uses the workerd implementation on node:dns See the unjs/unenv#376
#7625
d8fb032
Thanks @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
755a27c
Thanks @danielgek! - Add warning about the browser rendering not available on local#7614
8abb43f
Thanks @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
]: