-
- Bump OpenSSL version with vulnerability patch - pull/1684
-
-
Fix issue which caused
wrangler publish
to nuke sites - ObsidianMinor, issue/1625 pull/1631 pull/1635Y'all, we messed up and applied the wrong fix. The change which caused this problem was this.
-
-
-
Revert "allow site to be configured by environment - nataliescottdavidson, issue/1625 pull/1626
previous pr caused an issue.
-
-
-
Add support for Cron triggers - ObsidianMinor, issue/1574 pull/1592
Cron triggers are a new Cloudflare Workers feature which allow you to schedule execution times to call your workers.
-
Structured output for
wrangler publish
- nataliescottdavidson, issue/1460 pull/1538 pull/1528 pull/1522wrangler publish --output json
produces structured json output which can be parsed with tools such as jq. -
Upload .well-known dotfiles - nataliescottdavidson, issue/980 pull/1566
Wrangler sites users requested the ability to include the .well-known folder without including all hidden files.
-
Print url for wrangler login - encadyma, issue/1544 pull/1611
-
Allow site key to be configured by environment - oliverpool, issue/1567 pull/1573
-
-
- Handle leading slashes in KV keys - koeninger, issue/1560 pull/1559
-
-
Update stalebot settings - ispivey, pull/1561
Stalebot now waits 180 days to mark stale, it marks 'timed out' instead of 'wontfix', and added 'never stale' tag.
-
Pin Rust to 1.47 and fix clippy lints - ObsidianMinor, pull/1609
-
Copy edit on --host argument description - thmsdnnr, issue/1545 pull/1564
-
Hide stderr from browser process - jspspike, pull/1516
Wrangler login had the potential to cause random terminal output.
-
-
-
New configuration method with
wrangler login
- jspspike, pull/1471wrangler login
allows you to authenticate Wrangler to use your Cloudflare user credentials without hunting down an API token in the Cloudflare dashboard. It's straightforward! Just runwrangler login
, enter your credentials, and you're off to the races. -
wrangler dev
now runs on the same machines as your production code - EverlastingBugstopper avidal jwheels, pull/1085When running
wrangler dev
as an authenticated user, your requests will now run on the same servers that Cloudflare Workers run on in production. This means that what you see is what you get.wrangler dev
should behave exactly like production, though we still recommend deploying to a staging website before going to production in order to ensure your changes are safe. This change means you get access to things likerequest.cf
, the Cache API, and any Cloudflare settings you've applied in the dashboard while developing your Workers. -
wrangler dev
now supports redirects` - jspspike, issue/1508 pull/1512When an HTTP response status code is between 300 and 399, the server lets the client know that the data they're looking for isn't here anymore, and the client should issue another separate request to the endpoint denoted in the
Location
header of the response. Before, if you were developing withwrangler dev
onexample.com
, and your Worker issued a redirect fromhttps://example.com/oldurl
tohttps://example.com/newurl
, that's what would be in theLocation
header. This meant that whatever client you were using would then issue their second request to the public Internet rather than thewrangler dev
server running on your local machine. With this release, theLocation
header would now be rewritten tohttp://127.0.0.1:8787/newurl
, preventing your client from redirecting you away from the Worker you're trying to develop. -
Add
--config
flag to all commmands to override the defaultwrangler.toml
configuration file path - luanraithz, issue/1064 pull/1350All commands that read from a configuration file can now use a different configuration file path if the
--config
flag is specified. The commands affected are:kv:namespace
,kv:key
,kv:bulk
,route
,secret
,build
,preview
,dev
,publish
,subdomain
, andtail
. -
wrangler dev
configuration options for HTTP protocol - jspspike, issue/1204 pull/1485wrangler dev
now takes two additional configuration flags:--upstream-protocol
and--local-protocol
. Both of these take a value of eitherhttp
orhttps
.--upstream-protocol
determines what protocol the request going to your preview worker is (previously this was only controlled with the--host
flag) - this flag defaults tohttps
.--local-protocol
determines what protocolwrangler dev
listens for and defaults tohttp
. Ifhttps
is chosen, a self-signed certificate will be auto-generated for the dev server. -
wrangler dev
can be configured inwrangler.toml
- jspspike, issue/1282 pull/1477Any flag taken by
wrangler dev
(except--host
) can now be configured in the[dev]
section of yourwrangler.toml
. This allows different developers on the same project to share and persist settings for their local development environment. -
Check if
rustc
is installed before building a Rust project - ObsidianMinor, issue/487 pull/1461 -
Improve
preview_id
error message - EverlastingBugstopper, issue/1458 pull/1465When a
preview_id
is needed, the error message directs the user to add it to theirwrangler.toml
. -
Prevent
wrangler preview
andwrangler dev
for a Workers Site if there is no authenticated user - jspspike, issue/1138 pull/1447
-
-
-
Fix
wrangler route
commands that take an--env
flag - jspspike, issue/1216 pull/1448Before, if you passed an environment to a
wrangler route
command, it wouldn't work properly due to some mishandling of the arguments in the way we used our command line argument parser. This is now fixed andwrangler route
commands work as expected. -
Open browser as child process - jspspike, issue/516 pull/1495
When running
wrangler preview
, the browser is now opened as a child process. This fixes an issue on Linux where Wrangler would start the browser and then hang waiting for the browser to exit before it begins watching for changes. -
Direct cloudflared output with
wrangler tail
to/dev/null
- jspspike, issue/1432 pull/1450
-
-
-
Workers Unlimited is now Workers Bundled - EverlastingBugstopper, issue/1466 pull/1467
-
Replace
assert
with==
in tests withassert_eq
- sudheesh001, pull/1455 -
Various typo fixes - sudheesh001 jbampton, pull/1423 pull/1427 pull/1428 pull/1429 pull/1431 pull/1443 pull/1454
-
Removed unreachable code in
main.rs
- luanraithz, pull/1444
-
-
-
wrangler dev
listens on IPv4 by default - EverlastingBugstopper, issue/1198 pull/1405Before,
wrangler dev
would listen on[::1]:8787
by default, and call itlocalhost
in the terminal output. This was confusing for developers whoselocalhost
resolves to IPv4 and not IPv6. Now,wrangler dev
will listen on127.0.0.1:8787
by default. This can be overriden by passing values via the--ip
and--port
flags. -
Clarify where to find your
account_id
in the dashboard - EverlastingBugstopper, issue/1364 pull/1395When you create a new project with
wrangler generate
, it directs you to the Cloudflare Dashboard to find youraccount_id
andzone_id
. However, this flow only worked if you had your own domain. Developers who only useworkers.dev
for their Workers were directed to a page that does not exist! This message now points everyone to a page where they can find the information that they need.
-
-
-
Allow creation of preview namespaces when a namespace already exists in
wrangler.toml
- EverlastingBugstopper, pull/1414When we introduced KV preview namespaces, we made sure to add nice messages when creating new namespaces so people could easily add the new namespace id to their wrangler.toml in the correct place.
However, we missed a very common case where developers already have a production namespace defined in their
wrangler.toml
and they want to add a preview namespace. When this is the case, we returned an error message intended to only be thrown when running either wrangler preview or wrangler dev. This is now fixed! -
Allow multiple response header values in
wrangler dev
- EverlastingBugstopper, issue/1412 pull/1413Before,
wrangler dev
would not properly handle response headers that have multiple values. We would iterate over all response headers coming from the Workers runtime, and "insert" them into the header map instead of appending them. This is no longer the case and response headers should now work as expected. More details on this issue can be found here. -
Fix kv-namespace/kv_namespace behavior in environments - EverlastingBugstopper, issue/1408 pull/1409
When KV namespace support was initially added to Wrangler, we documented using
kv-namespaces
inwrangler.toml
. Unfortunately, the-
was not consistent with other fields such aszone_id
andaccount_id
, so the decision was made to allow bothkv-namespaces
andkv_namespaces
. When this change was introduced, it worked with top levelkv_namespaces
entries, but not in environments. This is now fixed! You can now usekv_namespaces
everywhere you can usekv-namespaces
.
-
-
-
Add link to testing docs in CONTRIBUTING.md - luanraithz, pull/1416
-
Remove unused
Krate::install
code - EverlastingBugstopper, [issue/247] pull/1410When we introduced our own version checking for Wrangler we stopped using
Krate::install
. This PR just removes that unused code.
-
-
-
Fixes bug preventing
wrangler publish
from deleting over 10000 keys - ashleymichal, issue/1398 pull/1400In 1.10.0 we removed the limit on bulk KV PUT and DELETE operations by batching the values but missed batched deletes for Workers Sites. Now with some refactoring all batched operations use the same logic and have the same behavior.
-
-
-
reinstate longer timeout on bulk uploads for sites - ashleymichal, pull/1391
In 1.10.0 we introduced a bug that reduced the timeout for bulk uploads back to the standard 30 seconds. This fixes that and restores the five minute bulk upload/delete timeout.
-
Increase default timeout to one minute - EverlastingBugstopper, pull/1392
For folks with slower connections we're increasing the timeout for API requests.
-
-
-
wrangler dev
now requires that you specify "preview" versions of KV namespaces - EverlastingBugstopper, ashleymichal, issue/1032 pull/1357 pull/1359 pull/1360In order to prevent you from accidentally stomping on production data in Workers KV, we're introducing the concept of explicit preview namespaces. When running
wrangler dev
, if you're using Workers KV, you'll need to specify a specific KV Namespace to use when previewing the Worker.Specifically, this change:
- Adds a
preview_id
field to items inkv_namespaces
inwrangler.toml
that must be provided in order to preview a worker that has kv namespaces. - also adds
--preview
to kv commands in order to interact with them instead of production namespaces.
If you define a KV Namespace in your
wrangler.toml
but don't specify apreview_id
, and then try to runwrangler dev
, you'll see the following:$ wrangler preview π JavaScript project found. Skipping unnecessary build! Error: In order to preview a worker with KV namespaces, you must designate a preview_id for each KV namespace you'd like to preview.
More details can be found in the documentation.
- Adds a
-
wrangler subdomain
allows you to rename your existing workers.dev subdomain - nprogers, issue/1279 pull/1353Workers recently introduced the ability to rename your workers.dev subdomain in the Workers dashboard. This change allows you to do the same thing from
wrangler
. -
Return more detailed error when preview uploads fail - jahands, issue/1330 pull/1356
When running
wrangler dev
orwrangler preview
, if the upload failed for validation or other reasons, we displayed pretty obtuse errors. Now we pass along more informative error details. -
Check for wrangler updates every 24 hours and message if you should update - EverlastingBugstopper, jspspike, issue/397 pull/1190 pull/1331
wrangler will now let you know if there's an update available, and will only bug you once every 24 hours.
-
Improve some error messages with human-readable suggestions - jspspike, issue/1157 pull/1329
Previously, you would see not-super-helpful error messages if your API Token was expired or missing some permissions, didn't have Workers Unlimited enabled and tried to upload to KV, or tried to create a namespace that already existed. But we strive for helpful, informative error messages!
Now, you'll see the following error messages as appropriate:
10026 => "You will need to enable Workers Unlimited for your account before you can use this feature.", 10014 => "Namespace already exists, try using a different namespace.", 10037 => "Edit your API Token to have correct permissions, or use the 'Edit Cloudflare Workers' API Token template.",
-
-
-
wrangler dev pretty-prints JSON messages from console.log() - jspspike, issue/1249 pull/1371
Previously, when running
wrangler dev
, you couldconsole.log(JSON.stringify(some_object))
, but the output was hard to read: newlines weren't appropriately parsed and whitespace was a bit of a mess.This change pretty-prints JSON received from the Inspector, so JSON output is much easier to read in
wrangler dev
. -
Don't install wasm-pack when publishing a type:webpack project - EverlastingBugstopper, issue/745 pull/1344
We shouldn't install wasm-pack if your project doesn't need it. We thought we fixed this in 1.7.0, but we didn't. This time it's fixed for real, we swear.
-
Pin wasm-pack and cargo-generate to specific versions instead of always downloading the latest version - jspspike, issue/1240 pull/1358
Previously, every time
wasm-pack
orcargo-generate
was needed, Wrangler would download and install the latest version. Now, we pin those dependencies to a specific version in every release of Wrangler. If you have either of these tools installed locally, Wrangler will use them if you have a more recent version. -
Support batched KV PUT and DELETE operations to improve Workers Site publish performance - jspspike, issue/1191 pull/1339
Previously, you couldn't use Workers Sites if you wanted to upload more than 10,000 static files, and it took a lot of time to upload close to that many files. This change instead batches upload and delete calls, allowing us to increase the limit and improve performance for everyone.
-
-
-
Add Code of Conduct - EverlastingBugstopper, pull/1346
We actually didn't have one before, so now we do!
-
Deprecate undocumented KV
bucket
attribute - ashleymichal, issue/1136 pull/1355The
bucket
attribute was not originally intended to be released into the wild. We announced deprecation in March, and are now removing it as an available configuration property. -
Refactor to separate KV commands, implementation of said commands, and site-specific logic - ashleymichal, pull/1332
This refactor makes the logic for interacting with KV more re-usable and maintainable.
-
Add SECURITY.md with responsible reporting guidelines - EverlastingBugstopper, pull/1345
-
-
-
Fix piping secret values to
wrangler secret put <VAR_NAME>
- dmcgowan, issue/1322 pull/1316In 1.9.1, we introduced a bug where piping values to
wrangler secret put
no longer worked. In 1.9.2, that bug is squashed, and the command works as expected.
-
-
-
Accept --verbose for every command - bradyjoslin, issue/975 pull/1110
Not every command outputs additional information when you pass
--verbose
, but none of them will fail to run if you pass--verbose
after this change. -
wrangler dev
checks if the specified port is available - EverlastingBugstopper, issue/1122 pull/1272When starting up
wrangler dev
, it now checks to see if the requested port is already in use and returns a helpful error message if that's the case.
-
-
-
Don't reinstall vendored binaries on every build - EverlastingBugstopper, issue/768 pull/1003
You may have noticed some very verbose and over-eager installation output when running Wrangler. Every
webpack
type build would installwranglerjs
andwasm-pack
. This was... super annoying and not a great experience, especially when runningwrangler preview --watch
orwrangler dev
. Each time you'd change a file, Wrangler would reinstall those external dependencies. This doesn't happen anymore! Wrangler will still download and install these external dependencies, but only if you have an outdated version. -
Remove redundant builds - EverlastingBugstopper, issue/1219 pull/1269
When running
wrangler preview --watch
orwrangler dev
on awebpack
type project, Wrangler will provide a new build artifact and upload it via the Cloudflare API. Before, we'd start a long-runningwebpack --watch
command, in addition to runningwebpack
on every change. We were running two builds on every change! This was not great and has been removed. This, combined with the above fix removing redundant installations, should greatly improve your dev iteration cycles. -
wrangler dev
will reconnect to the devtools WebSocket after being disconnected - EverlastingBugstopper, issue/1241 pull/1276wrangler dev
initiates a WebSocket connection via the Cloudflare API in order to streamconsole.log
messages to your terminal. Over time, it's very likely that the WebSocket would be disconnected. When this happened, Wrangler would panic, requiring developers to restart the process. Now, ifwrangler dev
gets disconnected, it will issue a reconnect request, allowing developers to runwrangler dev
as long as they are connected to the Internet.
-
-
-
Adds
Developing Wrangler
section toCONTRIBUTING.md
- EverlastingBugstopper, issue/270 pull/1288We love external contributors, and what better way to help get folks kickstarted than to add some documentation on developing Wrangler? Check out CONTRIBUTING.md if you're interested in helping out.
-
Remove
--release
fromwrangler publish --help
- EverlastingBugstopper, pull/1289We deprecated
wrangler publish --release
a long time ago in favor of environments, but it's still an accepted argument to preserve backwards compatibility. Now, it no longer shows up inwrangler publish --help
as an accepted argument, even though it's still an alias ofwrangler publish
. -
Updates license file to [email protected] - EverlastingBugstopper, pull/1290
The copyright in our MIT license was outdated and pointed to the email address of @ashleygwilliams (who no longer works at Cloudflare π’). Now it points to [email protected] :)
-
Add Dependabot to Wrangler - ispivey, pull/1294
Wrangler now uses Dependabot to automatically update dependencies. We had already been doing this on a sort of ad-hoc basis, but this should make it much easier to stay on top of updates!
-
Remove unused code warnings - ashleymichal, pull/1304
For our integration tests we create fixtures containing sample Workers projects. When we ran
cargo test
,cargo
would say that the code used to create said fixtures were unused (which was not true). This PR moves the fixture code to a place wherecargo
says "This is a Fine Place for This Code." -
Handle clippy warnings - ashleymichal EverlastingBugstopper, pull/1305 pull/1306
cargo clippy
is a helpful little tool that helps you write more idiomatic Rust. Over time, we've developed an immunity to the warnings produced by this tool, and we took a stab at cleaning some of them up.
-
-
-
Wrangler Tail - ashleymichal, gabbifish, EverlastingBugstopper, pull/1182
Wrangler Tail introduces a way to view console statements and exceptions live as they occur in your Worker. Simply run
wrangler tail
against any deployed Worker and pipe the output throughjq
or to a file to stream trace events per request. -
Much faster build times for Workers Sites projects - EverlastingBugstopper, pull/1221
When you deploy a Workers Site, Wrangler generates a unique hash for each file. It does this so that your Worker does not serve stale files from Cloudflare's edge cache to end users. Unfortunately, generating these hashes took a really really long time since we were using a cryptographically strong hash. Since we're just using this hash for cache invalidation, we decided it's not necessary to use such a complicated algorithm. We switched to using xxhash and have seen noticeable speed improvements.
-
Add --url to wrangler preview - larkin-nz, issue/351 pull/1001
wrangler preview
now has the ability to open any URL! Before,wrangler preview
would always openexample.com
, and you would be able to change the URL in the browser only. Now, you can usewrangler preview --url https://mysite.com/my-amazing-endpoint
and your preview session will get started off on the right foot. -
Print email addresses for API token users on
wrangler whoami
- dhaynespls, issue/863 pull/1212Before, if you ran
wrangler whoami
as an API token user, you didn't get much info. Due to some heavy lifting by folks working on the Cloudflare API, API token users with the correct permissions can now see what email address they are authenticated with when they runwrangler whoami
. Nifty! -
wrangler generate
auto increments default worker name - xprazak2, issue/58 pull/469When
wrangler generate
is run without a name for the worker, it will find a name for the worker that does not already exist in that directory. -
Standardize colors in
stdout
- EverlastingBugstopper, pull/1248Wrangler likes to print colors where appropriate, and now there is a standard module for printing different colors that is used across the codebase.
-
Suggests
wrangler init
ifwrangler.toml
does not exist - ashleymichal, issue/827 pull/1239When there is no
wrangler.toml
in a directory you're trying to run Wrangler in, it doesn't know what to do. The way to fix this is to make awrangler.toml
, and the way to do that is to runwrangler init
.
-
-
-
Allow kv-namespaces and kv_namespaces - EverlastingBugstopper, issue/1158 pull/1169
Most fields defined in
wrangler.toml
are one word, but some of them are two! In the past, we usually use_
to separate words, but somehow we used a-
forkv-namespaces
. This was inconsistent and a bit confusing. Now we allow both for the sake of backwards compatibility, but in the future we'll try to stick tosnake_case
. -
Typo fix in
wrangler init
- jplhomer, pull/1210A successful
wrangler init
execution used to output "Succesfully" instead of "Successfully", but not anymore! -
More granular errors in
wrangler dev
- EverlastingBugstopper, pull/1251In the last release we added an error message in
wrangler dev
for failed uploads. Unfortunately it was a bit overeager and some information about different types of errors were lost. This behavior has been fixed!
-
-
-
Unify wrangler's user agent - EverlastingBugstopper, issue/731 pull/1070
Wrangler sure does send a lot of API requests! Before, about half of the API requests Wrangler sent would send them with the HTTP header
User-Agent: wrangler
. Now, all requests sent by Wrangler include that User Agent. This lets the APIs we use know that the request is coming from this tool. Yay for being good netizens! -
Refactors and documentation of
wrangler dev
- EverlastingBugstopper, pull/1220No behavior changes with this one, just some improvements to code layout and some extra documentation comments. Check it out if you're interested!
-
-
-
Don't remove user configuration on npm installs - EverlastingBugstopper, issue/1180 pull/1181
Wrangler started removing user's authentication configuration files on reinstallation from npm - this is no good and is fixed in this release.
-
Allow multiline files to be piped to
wrangler secret put
- EverlastingBugstopper, issue/1132 pull/1171Previously, if you tried to pipe a multiline file to
wrangler secret put
, the secret would only upload the first line of the file. This... was not helpful -cat hello_world.txt | wrangler secret put
should behave as expected with this release.
-
-
-
Bump GitHub Actions checkout version - imbsky, pull/1170
GitHub Actions are pretty nifty, and we've started using them as our CI provider in Wrangler. Actions allow you to specify a step that "uses" a template, and one of the most used templates is the template that checks out relevant code. GitHub just released v2 of that template, and our CI now uses it!
-
-
-
Improvements to the Workers Sites asset manifest - EverlastingBugstopper, issue/897 pull/1145
Workers Sites uses the concept of an asset manifest to invalidate Cloudflare's cache when new files are published. Every time you publish your Workers Site, Wrangler will re-create a mapping of file names with a hash to the contents of the file. This release includes a few steps that improve this experience:
-
Manifest sizes are smaller by a magnitude of ~6.4. This should help some folks who were previously running into size issues when uploading a Workers Site.
-
Any time an asset manifest is created, you will see the files that are being hashed in real time with a fancy loading spinner - no more waiting without any information!
-
Asset manifest creation is now faster due to a refactor.
-
-
Clarify mutual exclusivity of zoneless v. zoned deploys - EverlastingBugstopper, issue/1152 pull/1154
When publishing a Worker, you must specify either
workers_dev = true
or both azone_id
androute/routes
. Previously, if yourwrangler.toml
violated this requirement, it would error with the following message:$ wrangler publish Error: you must set workers_dev = true OR provide a zone_id and route/routes.
It's technically correct, but we can make it even more clear what the issue is. The new error message looks like:
$ wrangler publish Error: you must set EITHER workers_dev = true OR provide a zone_id and route/routes.
-
-
-
Fixes
wrangler config
information message - EverlastingBugstopper, pull/1164In Wrangler 1.8.2, we updated the formatting of some of Wrangler's informational messages. Unfortunately when this was introduced, it came with a bug in
wrangler config
that made the message read out in the wrong order. This is fixed in this release!
-
-
-
Remove unused badges from README - EverlastingBugstopper, pull/1166
We no longer use Azure Pipelines as our CI provider, nor do we run non-test builds in CI so we removed those badges from the README.
-
-
-
Configurable binary host URL - noherczeg, pull/1018
Previously, binaries installed by Wrangler were all assumed to come from npm. If you work in a controlled environment and can only install binaries from a specific endpoint (instead of npm), you can now specify that endpoint using the WRANGLER_BINARY_HOST environment variable.
-
-
-
Eliminate downtime when redeploying Workers Sites - ashleymichal, issue/783, pull/1115
When Workers Sites were first introduced, redeploying a site could lead to a few seconds of downtime if the Worker upload fails. Specifically, if a new Workers Sites upload failed, it was possible that the old, now-unused files in Workers KV would be deleted anyways, meaning that the preexisting Workers Site would suddenly have missing resources. This fix waits to delete now-unused files until after a new Workers Sites script is published.
-
-
-
Add npm badge to README - tomByrer, [pull/1121]
Add badge to README that points to npm page for Wrangler.
-
Unify attention-grabbing messages - EverlastingBugstopper, [pull/1128]
Use more actionable, easy-to-read information printouts throughout Wrangler.
-
-
-
Error messaging for internet required to talk to Cloudflare API - EverlastingBugstopper, issue/1093 pull/1114
With the release of
wrangler dev
in 1.8.0, it was not clear to users that internet is required since the feature communicates with Cloudflare's API. With this error message, users without internet connection are shown actionable next steps - check internet connection and lastly check if Cloudflare's API is down.
-
-
-
Fix live reload for
wrangler dev
- EverlastingBugstopper, issue/1082 pull/1117wrangler dev
re-builds and re-uploads your script to the Cloudflare API when it detects a file change. The Cloudflare API returns a new token which allowswrangler dev
to route subsequent requests to the new script. Previously,wrangler dev
would re-build, re-upload, and receive the new token, but it wouldn't use it for a couple of minutes due to some faulty threading logic. (darn mutexes!) After this change,wrangler dev
will block incoming requests when it is switching the token, thus fixing the issue. -
Remove unneeded carriage return in
wrangler secret put
- gabbifish, issue/1109 pull/1112Previously, interactive input from
wrangler secret put
added a carriage return to the secret key/value pairs on Windows. This no longer happens and input is parsed properly before uploading.
-
-
-
wrangler dev
- EverlastingBugstopper, issue/845 pull/883wrangler dev
is a local proxy server to Cloudflare's preview service, allowing you to automatically re-build and preview your application onlocalhost
. This feature is in alpha and we're looking for feedback and bug reports: check out this issue!wrangler dev
works very similarly towrangler preview
, but instead of opening your browser to preview your Worker, it will start a server onlocalhost
that will execute your Worker on incoming HTTP requests:$ wrangler dev
You should be able to send HTTP requests to
localhost:8787
, along with any headers or other request data, and your Worker should execute as expected. Additionally, you'll seeconsole.log
messages and exceptions appearing in your terminal (!!!).For more information on
wrangler dev
's options, such as passing a customhost
,ip
, orport
, runwrangler dev
in your terminal for the available flags and options. -
Multi-route support - ashleymichal, issue/866 pull/916
Wrangler now allows developers to publish their Workers projects to multiple routes on a Cloudflare zone.
To deploy your Workers project to multiple routes, you can migrate from the
route
key toroutes
:name = "worker" type = "javascript" account_id = "youraccountid" # change this line # route = "example.com/foo/*" # to this line routes = ["example.com/foo/*", "example.com/bar/*"] zone_id = "yourzoneid"
-
wrangler secret
commands - ashleymichal, bradyjoslin, issue/907 issue/909 issue/912 pull/1045Wrangler now allows developers to use secrets in their Workers codebase. Secrets are secure values that can be accessed as constants, similar to text variables, inside of your Workers code.
To set a secret, you can use
wrangler secret put MY_SECRET_NAME
. The interactive prompt will ask for the secret text you'd like to add to your project:$ wrangler secret put MY_SECRET_NAME Enter the secret text you'd like assigned to the variable MY_SECRET_NAME on the script named my-project
Importantly, secrets are constrained to an environment, and do not carry over between different deployed Workers (e.g.
my-worker
andmy-worker-production
). This allows you to use different API keys, URLs, and other common "environment variable"-style values in your different environments. Specifying an environment can be done using the--env
(or-e
, for short):$ wrangler secret put MY_SECRET_NAME --env production Enter the secret text you'd like assigned to the variable MY_SECRET_NAME on the script named my-project-production
The
wrangler secret
subcommand also allows developers tolist
anddelete
secrets for your Workers projects:$ wrangler secret delete MY_SECRET_NAME Are you sure you want to permanently delete the variable MY_SECRET_NAME on the script named my-project [y/n] y π Deleting the secret MY_SECRET_NAME on script my-project. β¨ You've deleted the secret MY_SECRET_NAME. $ wrangler secret list [{"name":"API_KEY","type":"secret_text"},{"name":"MY_OTHER_SECRET","type":"secret_text"}]
-
Plain text binding support - EverlastingBugstopper - issue/993 pull/1014
In addition to secrets, Wrangler now also supports setting "plain text" bindings βΒ values that will be available as constants in your Workers code, but aren't encrypted. This can be done by passing values in
wrangler.toml
under thevars
key:name = "worker" type = "javascript" account_id = "your-account-id" workers_dev = true vars = { ENV = "staging" } [env.prod] vars = { ENV = "production" }
-
Return accounts and account IDs when running
wrangler whoami
- ashleygwilliams, issue/630 pull/983We've made big improvements to
wrangler whoami
, and now return a list of Cloudflare accounts and account IDs for your authenticated user. If you are unauthenticated, or something is wrong with your API key or token, we'll also return an error with this command to help you understand how to fix your authentication issues! -
Configure sourcemap file - xtuc, issue/681 pull/1063
webpack
(by default) emits a sourcemap that maps to amain.js
file, which doesn't match the Workers runtime's configured filename,worker.js
. This causes exception reporting tools to be unable to process a Workers sourcemap file β we've updated our Webpack config to output the fileworker.js
and have fixed this issue. -
Upload "draft" worker if secret is created before initial worker script has been uploaded - gabbifish, issue/913 pull/1087
If your script hasn't yet been deployed to the Workers platform, creating and deleting secrets will also create a "draft" Worker βΒ allowing you to still manage secret bindings before you deploy the first version of your script.
-
-
-
Correctly tar release binaries - EverlastingBugstopper, issue/1055 pull/1062
This PR updates the way that release binaries are generated during Wrangler's release workflow.
-
Change NPM binary permissions - xtuc, pull/1058
This PR removes an unnecessary executable permission from
npm/binary.js
. -
Improvements to GitHub Actions build process - EverlastingBugstopper, pull/1037
This PR adds a number of improvements to wrangler's GitHub Actions workflows, including caching, release management, and more granular trigger conditions.
-
Add GitHub Actions badge to README - EverlastingBugstopper, pull/1030
This PR adds a GitHub Actions badge to our README, indicating whether the repo's builds are currently passing:
-
Test Rust with GitHub Actions - EverlastingBugstopper, pull/1028
This PR adds a GitHub Actions workflow for running
wrangler
's test suite on a number of platforms and Rust versions. -
Add release checklist - EverlastingBugstopper, pull/1021
This PR adds a release checklist, documenting the steps that we use to release new versions of Wrangler. That checklist includes writing this CHANGELOG - very meta!!!
-
Update dependencies - EverlastingBugstopper, pull/1000
This PR updates some project dependencies as a result of running
cargo update
. -
Run CI on pull requests, not pushes - EverlastingBugstopper, pull/1090
This PR changes the GitHub Actions workflow "event trigger" to fire on
pull_request
, notpush
. This will allow wrangler's GitHub Actions workflows to run on PRs sent from forks! -
Zip .tar files in CI - EverlastingBugstopper, pull/1069 pull/1080
These PRs fix some issues in the GitHub Actions release workflow that were causing release artifacts to be incorrectly generated.
-
Fixes clippy warnings - EverlastingBugstopper, pull/1071
This PR fixes some linting issues surfaced by clippy throughout the project.
-
Extract upload and deploy to lib modules - ashleymichal, pull/1075
This PR refactors some of the underlying code used inside of
wrangler publish
, to create two higher-levelupload
anddeploy
modules. This work has already been used to support "draft workers" in #1087, and to reduce duplication of code betweenwrangler preview
,wrangler dev
, andwrangler publish
.
-
-
-
Do not factor in .gitignore into workers sites upload directory traversal - gabbifish, issue/958 pull/981
This change ensures that the wrangler include/exclude logic for Workers Sites bucket directory traversal does NOT take into account .gitignore, since best practice for static site generators is to put your build directory into your .gitignore.
-
Update cloudflare-rs, reqwest, http, uuid - ashleymichal, issue/301 pull/1009
These dependency updates may look like routine maintenance, but this reqwest version actually makes support for corporate proxies possible!
-
Add progress bar during Site upload - gabbifish, issue/906 pull/956
Larger static asset uploads in Wrangler now show a progress bar based on the bulk uploads being made.
-
Allow custom webpack config for Workers Sites projects - ashleymichal, issue/905 pull/957
Previously we blocked users from declaring
webpack_config
in theirwrangler.toml
, as it can be relatively confusing due to the nested nature of the workers-site directory. We removed that block, and added a friendly help message when webpack build fails and the user has a customwebpack_config
declared. -
Reformat config api-key output - bradyjoslin, issue/889 pull/910
We care a lot about our error output. Now the output from
wrangler config
is consistent between calls with and without the--api-key
flag. -
Improve error message for
wrangler init --site
when wrangler.toml already exists - ashleygwilliams, issue/648 pull/931wrangler init
generally expects that you don't already have awrangler.toml
present; however it is common that users want to add static site functionality to their existing wrangler project and will try usingwrangler init
to do so. Rather than simply complaining that the toml already exists, now we add theworkers-site
directory to the project, and print out the suggested configuration to add towrangler.toml
. Much nicer! -
Add a helpful error message on authentication error - EverlastingBugstopper, issue/492 pull/932
Previously, when
wrangler publish
ran into authentication errors, the API result would just print to the screen. Now, it prints a helpful hint to users to re-runwrangler config
to fix the error. -
Provide helpful error when user accidentally puts kv-namespace config under
[site]
- gabbifish, issue/798 pull/937TOML formatting can be tricky, specifically tables, so it is common for users unfamiliar with the format to accidentally nest attributes inside tables without intending it. In this case, if a user adds a kv-namespaces entry to the bottom of a toml with [site] configuration already declared, it is parsed as a part of the [site] table, rather than as a top-level key. The error output from this is not super helpful, as it just says "unknown field
kv-namespaces
" which isn't precisely correct.This PR detects when this error occurs and provides a help suggestion to put kv-namespaces ABOVE the [site] table entry to fix the problem.
-
-
-
Don't install
wasm-pack
forwebpack
type projects - EverlastingBugstopper, issue/745 pull/849You may have noticed that Wrangler installs
wasm-pack
for yourwebpack
projects, which may seem strange since it's the tool we use to build Rust projects. The reason for this is because you can also build Rust usingwasm-pack
andwebpack
in tandem if you use thewasm-pack-plugin
. This plugin recently added support for handling the installation ofwasm-pack
which means Wrangler no longer needs to handle those installs.
-
-
-
Make Azure use latest
rustc
- EverlastingBugstopper, issue/887 pull/893Updates our CI to update the rust toolchain to the latest stable version after installation.
-
Fix nightly builds - EverlastingBugstopper, pull/895, pull/898
Now we confirm Wrangler builds against nightly Rust releases!
-
Fix compiler warnings on windows - uma0317, issue/800 pull/919
We build Wrangler for Mac OSX, Linux, and Windows, and each of these environments has slightly different needs at compile time. In this case, community contributor uma0317 added configuration that eliminated unused imports for Windows at compile time.
-
Remove deprecated kv-namespace config check - ashleymichal, pull/929
Back in 1.1.0, we introduced more robust support for adding KV namespaces to your project. It was a breaking change for users who were still using our first pass at configuration for this in their toml, so we added a friendly error message telling them how to update their
wrangler.toml
. At this point, all of our users have safely transitioned onto the new syntax, and so we removed the warning; any lingering use of the old syntax will be met with a parse error instead. -
Use binary-install for npm - EverlastingBugstopper, pull/862
This extracts a lot of the logic in Wrangler's installer to an external package, binary-install, which we will also use for installing wasm-pack on webpack project builds. Switching to this package also has the added benefit of cleaning up the downloaded binary on
npm uninstall -g @cloudflare/wrangler
.
-
-
-
BREAKING CHANGE: Require the
webpack_config
field inwrangler.toml
to build with a custom configuration - EverlastingBugstopper, issue/296 pull/847Wrangler will no longer use a
webpack.config.js
at the root of your project to build your worker. If you would like to continue using a custom build configuration, you will need to specify thewebpack_config
field in yourwrangler.toml
like so:name = "my-worker" workers_dev = true account_id = "01234567890987654321234567890" webpack_config = "webpack.config.js"
-
API Token Support - gabbifish/ashleymichal, issue/354 pull/471/pull/879
Wrangler can now be configured with API Tokens!
Don't worry, current configurations with an email address and a Global API Key will continue to work, but we highly recommend that you switch to API Tokens as they are a much more secure authentication method.
If you want to use API tokens, create an API token from the "Edit Cloudflare Workers" API token template here, and copy/paste it in the
wrangler config
prompt. Alternatively, you can set theCF_API_TOKEN
environment variable. -
Add the ability to preview without opening the browser - EverlastingBugstopper, issue/256 pull/816
wrangler preview
can now be called with a--headless
flag that will not open the browser. -
Check for valid credentials when running
wrangler config
- gabbifish, issue/439 pull/842Before this version of Wrangler,
wrangler config
would allow any input string to be passed for your user details. Now, Wrangler validates that the credentials will work with Cloudflare's API. -
Add a warning when publishing a Workers Site to a route without a trailing asterisk - EverlastingBugstopper, issue/814 pull/839
When publishing a Workers Site to your own domain, it's important that the Worker code runs on every path on your domain. This isn't particularly clear, so now when attempting to publish a Workers Site to a route without a trailing asterisk, Wrangler will print a warning message.
-
Better error message for publishing to a duplicate route - pradovic, issue/519 pull/813
When publishing to a route that is associated with another worker, Wrangler now prints a more actionable error message.
-
Better error message when webpack fails - ashleymichal, issue/428 pull/837
Wrangler now recommends running
npm install
as a possible remedy for failed webpack builds.
-
-
-
Properly handle errors when running Wrangler as a global npm package - jaredmcdonald, issue/848 pull/857
-
Clean up temporary build files - EverlastingBugstopper, pull/853
When building a script, Wrangler creates a temporary file. Old versions of Wrangler were quite messy about it, but now it cleans up after itself.
-
Fix the help text for
wrangler generate
- EverlastingBugstopper, pull/830The default value for a template is now a complete and valid URL instead of a sample project name.
-
Remove --version on subcommands - EverlastingBugstopper, issue/791 pull/829
Each subcommand in Wrangler used to take a
--version
argument which would print the name of the subcommand. For instance,wrangler publish --version
would printwrangler-publish
. This wasn't super helpful, so we've removed that functionality. -
Fix a broken link in the README - victoriabernard92, pull/838
-
-
-
Create fixtures programmatically - EverlastingBugstopper, pull/854
Wrangler's test suite relied on a large number of fixtures that it read in from the file system. Now, it writes the test fixtures itself and does not rely on reading fixtures from the file system.
-
Clean up Workers Sites logic - ashleymichal, issue/622 issue/643 pull/851
-
Call cloudflare-rs from https.rs - gabbifish, pull/841
We've refactored some of our API client code in order to make way for some future improvements.
-
Audit code comments - EverlastingBugstopper, pull/846
-
Update the author of the npm package - EverlastingBugstopper, pull/836
The author of the npm package is now [email protected]
-
Remove unused code warnings when running tests - pradovic, issue/818 pull/832
Due to the way the Rust compiler works, some of our test code appeared to be unused, even though it wasn't really. After making a couple of modules public, there are no more warnings.
-
Use the same binding name for Rust and webpack wasm modules - ashleymichal, pull/822
-
Move the code for each subcommand to its own directory - EverlastingBugstopper, pull/831
-
Refactor upload forms - ashleymichal, pull/826
We've separated some tangled logic regarding the form Wrangler POSTs to the Cloudflare v4 API.
-
Pull npm version from package.json - EverlastingBugstopper, issue/812 pull/817
Wrangler's npm installer version now only needs updating in the package.json instead of both the package.json and the source code.
-
-
-
Move Wrangler docs from READMEs to the Cloudflare Workers documentation site - victoriabernard92, pull/823
Wrangler has outgrown the README as primary documentation paradigm, and we've moved its documentation to the Cloudflare Workers documentation site.
-
Update the demo gif in the README - EverlastingBugstopper, issue/843 pull/868
The demo gif at the top of the README now accurately reflects the behavior of the latest Wrangler release.
-
-
-
Deprecate
wrangler publish --release
- EverlastingBugstopper, issue/538 pull/751wrangler publish --release
is now simply an alias ofwrangler publish
. This is related to the introduction of environments made in 1.3.1 and is intended to reduce confusion surrounding deploy targets. Previously,wrangler publish --release
would deploy to a route on your own domain, andwrangler publish
would deploy to your workers.dev subdomain. This was a confusing API, and we now require individual environments to have eitherworkers_dev = true
or both aroute
andzone_id
in each section ofwrangler.toml
. This makes it very clear where your Workers code is being deployed. If you're not usingwrangler publish --release
but you addedworkers_dev = false
to the top level of yourwrangler.toml
because Wrangler warned you to - you can now safely remove it! If you are usingwrangler publish --release
, know that it is functionally the same aswrangler publish
. If you want to deploy to workers.dev and also a route on your own domain, you will need to set up multiple environments. -
Deprecate
private
field inwrangler.toml
- stevenfranks, issue/782 pull/782In a related note, the
private
field no longer functions inwrangler.toml
. The original intent behind this field was to allow "publishing" without "activating". Unfortunately this led to a lot of undefined behavior if the value was switched fromtrue
tofalse
in between awrangler publish
command and awrangler publish --release
command and vice versa. With the removal ofwrangler publish --release
, we are also removing theprivate
field. If yourwrangler.toml
files contain a value for private, you can remove it! -
Include/exclude static assets in a Workers Sites project - gabbifish, issue/716 pull/760
Your
wrangler.toml
has two new optional fields:include
andexclude
. These fields give you more granular control over what files are uploaded to Workers KV. This behavior mirrors Cargo's include/exclude functionality. Further documentation for this feature is available here. -
A more robust
wrangler generate
- EverlastingBugstopper, issue/315 pull/759wrangler generate
is now much smarter aboutwrangler.toml
files. Previously,wrangler generate
would simply create the same configuration for every project, and it would ignore anywrangler.toml
that was committed to the template. This means much less guesswork when usingwrangler generate
with existing Workers projects. -
Add the ability to check if you've already registered a workers.dev subdomain - gusvargas, issue/701 pull/747
You can now run
wrangler subdomain
without any arguments to see if you have registered a workers.dev subdomain.$ wrangler subdomain π foo.workers.dev
-
Add
--verbose
flag towrangler publish
andwrangler preview
- gabbifish, issue/657 pull/790You can now run
wrangler publish --verbose
andwrangler preview --verbose
on a Workers Sites project to view all of the files that are being uploaded to Workers KV.$ wrangler publish --verbose π Using namespace for Workers Site "__example-workers_sites_assets" π Preparing to upload updated files... π Preparing ./public/favicon.ico π Preparing ./public/index.html π Preparing ./public/404.html π Preparing ./public/img/404-wrangler-ferris.gif π Preparing ./public/img/200-wrangler-ferris.gif β¨ Success β¨ Built successfully, built project size is 11 KiB. β¨ Successfully published your script to https://test.example.workers.dev
-
Disallow
node_modules
as a bucket for Workers Sites - gabbifish, issue/723 pull/792node_modules
is no longer allowed to be a bucket for Workers Sites. It is notoriously very large and if it were specified as a bucket it would probably be a very expensive mistake. -
Allow installs to utilize Wrangler binaries via a caching proxy instead of GitHub directly - gabbifish, [pull/797]
To avoid dependency on one external service, GitHub, we enabled a cache proxy (using Workers!) for installations of Wrangler.
-
Provide a better error message when using an unverified email address - ashleygwilliams, issue/320 pull/795
The Cloudflare API refuses to play nice with unverified email addresses (we don't like spam!), and now when this happens, Wrangler gives an actionable error message.
-
-
-
Fix Rust live preview - gabbifish, issue/618 pull/699
If you use Wrangler to develop Rust Workers, you may have noticed that live preview (
wrangler preview --watch
) was not working with your project. Not to worry though, we cracked down on this bug with an (oxidized) iron fist! Wrangler now has cross-platform support for live previewing Rust Workers. -
Minimize timeout errors for bulk uploads - gabbifish, issue/746 pull/757
Sometimes Wrangler would make API calls to Workers KV that would timeout if there were too many files. We've increased the amount of time Wrangler will wait around for the API operations to complete.
-
Print readable error message when external commands fail - EverlastingBugstopper, pull/799
Wrangler depends on a few external applications, and sometimes the calls to them fail! When this happens, Wrangler would tell you the command it tried to run, but it included a bunch of quotes. This change removes those quotes so the command is easily readable and can be copy/pasted.
-
Disallow
wrangler generate --site
with a template argument - EverlastingBugstopper, issue/776 pull/789In Wrangler 1.4.0, we introduced Workers Sites, which included the ability to run
wrangler generate --site
which would use our site template behind the scenes. Confusingly, you could also pass a template to this command:wrangler generate my-site https://github.com/example/worker-site --site
, which would not behave as expected. This specific usage will now correctly output an error.
-
-
-
Begin refactoring test suite - ashleymichal, pull/787
We're constantly shipping features in Wrangler, and with more features comes a larger codebase. As a codebase expands, it goes through some growing pains. This release includes some improvements to the internal organization of Wrangler's codebase, and is intended to make our lives and our contributors' lives easier moving forward.
-
Moved all "fixture" helper functions to "utils" module to share between build/preview tests
-
Removed "metadata_wasm.json" from
simple_rust
fixture -
Extracted all module declarations in
main.rs
tolib.rs
to allow tests to import withuse wrangler::foo
-
Split
target/mod.rs
into one file per struct -
Cleaned up KV Namespace mod system
-
Use
log::info!
instead ofinfo!
inmain.rs
-
-
Refactor GlobalUser to be passed as a reference consistently - gabbifish, pull/749
-
Remove internal link from CONTRIBUTING.md - adaptive, pull/784
-
Fix some Clippy warnings - EverlastingBugstopper, pull/793
-
Clean up leftover directories created by tests - ashleymichal, pull/785
-
Refactor subdomain module - EverlastingBugstopper, issue/758 pull/764
-
Fix README markdown misrender - dottorblaster, pull/763
-
Remove duplicate Environments subheader from README - bradyjoslin, pull/766
-
Change Crate author to the Workers Developer Experience team - ashleygwilliams, pull/752
-
-
-
Workers Sites - pull/509
Wrangler 1.4.0 includes supports for Workers Sites, enabling developers to deploy static applications directly to Workers. Workers Sites is perfect for frontend frameworks like React and Vue, as well as static site generators like Hugo and Gatsby.
Workers Sites is a feature exclusive to Wrangler, and combines a great developer experience with excellent performance. The
--site
flag has been added towrangler init
andwrangler generate
to use Workers Sites with new and existing projects:# Add Workers Sites to an existing project $ wrangler init --site # Start a new Workers Sites project $ wrangler generate --site
If you're ready to get started using Workers Sites, we've written guides for the various routes you might take with your project:
- Create a new project from scratch
- Deploy a pre-existing static site project
- Add static assets to a pre-existing Workers project
For more details on how Workers Sites works with Wrangler, check out the documentation. We also have a brand new tutorial to help you learn the Workers Sites workflow, by deploying a React application!
Workers Sites has been a heroic effort by the entire Workers Developer Experience team, comprising of Wrangler updates, new project templates, and open-source packages. We're super excited about the future that Workers Sites represents, where static sites and serverless functions can work together to build powerful, cutting-edge applications.
Make sure to try out Workers Sites to build your next app! πππ
-
Download release from our proxy rather than GitHub - zackbloom, pull/692
-
Add validation for workers names in wrangler init and wrangler generate - gabbifish, issue/470
There are a number of requirements around what your Workers script is named β previously, Wrangler would opaquely fail and not indicate that your script name was invalid: this PR updates the
init
andgenerate
commands to validate the potential name before continuing to create a new project. -
Ensure KV subcommands check for presence of required fields in wrangler.toml - gabbifish, [issue/607] pull/665
There's a number of commands in
wrangler
that require a properly configuredwrangler.toml
file: instead of failing, this PR ensures that these commands now check your configuration file before attempting any action. Hooray for clarity! π -
Show size when a KV upload error occurs - stevenfranks, issue/650 pull/651
Previously, when uploading a file to Workers KV from Wrangler, the error output didn't indicate the size of the file that was being uploaded. This PR improves the output of that message by showing both the file size and the maximum file size that can be uploaded to Workers KV.
-
Better file support for kv:put - phayes, pull/633
The
kv:put
command, introduced in Wrangler 1.3.1, has been improved to support uploading non-UT8 files. In addition, the command now streams files directly to the Cloudflare API when uploading, instead of buffering them in memory during the upload process.
-
-
Ensure we install and cache the latest version of cargo-generate and wasm-pack if user has an outdated cargo installed version - EverlastingBugstopper, issue/666 pull/726
Wrangler orchestrates a few other tools under the hood, notably
wasm-pack
andcargo-generate
. We use a library calledbinary-install
to fetch and cache binaries we download. However, to avoid downloading unnecessarily, we first check if the user has a copy locally on their machine that they hadcargo install
'd. We had a bug where in this logic branch, we didn't check that the local version was the most up-to-date version. This meant that users who had an older installed version may run into errors when wrangler expected to use features of a newer version of that tool. This PR adds the logic to check for the version and will install and cache a newer version for wrangler to use (leaving your local version as is!).-
Remove link to 000000000000000000.cloudflareworkers.com - EverlastingBugstopper, pull
Have you ever run
wrangler preview
in your project and wondered why the URL to preview your application is000000000000000000.cloudflareworkers.com
? The writer of this CHANGELOG finds it confusing, too: this PR removes that line, making it easier to parse the output fromwrangler preview
. -
Make install actually fail if the release can't be downloaded - zackbloom, pull/672
When Wrangler's installation shim attempts to install Wrangler on your machine, there's the possibility that the installation can fail βΒ instead of failing silently, the installation shim now properly throws an error, allowing us to better diagnose installation failures.
-
-
-
KV command error output improvements - gabbifish, issue/608 pull/613
The Wrangler team is always on the quest for perfect error messages. In pursuit of that goal, we've improved how errors in the
wrangler kv
subcommands output to your terminal. π -
Added missing word to whoami response - stevenfranks, pull/695
Clear writing is good! It's hard to write clearly when words are missing in a sentence. This PR corrects the output of
wrangler whoami
to add a missing word, making this command easier to read. π€
-
-
-
Webpack documentation - EverlastingBugstopper, issue/721 pull/724
For our default build type, aptly named "webpack", Wrangler uses webpack under the hood to bundle all of your assets. We hadn't documented how we do that, what our default config is, and how you can specify your own custom webpack config if you'd like. We have those docs now, so check them out!
-
-
-
Environments - EverlastingBugstopper, issue/385
Wrangler 1.3.1 includes supports for environments, allowing developers to deploy Workers projects to multiple places. For instance, an application can be deployed to a production URL and a staging URL, without having to juggle multiple configuration files.
To use environments, you can now pass in
[env.$env_name]
properties in yourwrangler.toml
. Here's an example:type = "webpack" name = "my-worker-dev" account_id = "12345678901234567890" zone_id = "09876543210987654321" workers_dev = false [env.staging] name = "my-worker-staging" route = "staging.example.com/*" [env.production] name = "my-worker" route = "example.com/*"
With multiple environments defined,
wrangler build
,wrangler preview
, andwrangler publish
now accept a--env
flag to indicate what environment you'd like to use, for instance,wrangler publish --env production
.To support developers transitioning to environments, we've written documentation for the feature, including further information about deprecations and advanced usage. Check out the documentation here!
-
KV commands - ashleymichal, gabbifish, issue/339
Wrangler 1.3.1 includes commands for managing and updating Workers KV namespaces, keys, and values directly from the CLI.
-
wrangler kv:namespace
wrangler kv:namespace
allows developers tocreate
,list
, anddelete
KV namespaces, from the CLI. This allows Wrangler users to configure new namespaces without having to navigate into the Cloudflare Web UI to manage namespaces. Once a namespace has been created, Wrangler will even give you the exact configuration to copy into yourwrangler.toml
to begin using your new namespace in your project. Neat!$ wrangler kv:namespace create "MY_KV" π Creating namespace with title "worker-MY_KV" β¨ Success: WorkersKvNamespace { id: "e29b263ab50e42ce9b637fa8370175e8", title: "worker-MY_KV", } β¨ Add the following to your wrangler.toml: kv-namespaces = [ { binding = "MY_KV", id = "e29b263ab50e42ce9b637fa8370175e8" } ]
-
wrangler kv:key
wrangler kv:key
gives CLI users access to reading, listing, and updating KV keys inside of a namespace. For instance, given a namespace with the bindingKV
, you can directly set keys and values from the CLI, including passing expiration data, such as below:$ wrangler kv:key put --binding=KV "key" "value" --ttl=10000 β¨ Success
-
wrangler kv:bulk
wrangler kv:bulk
can be used to quickly upload or remove a large number of values from Workers KV, by accepting a JSON file containing KV data. Let's define a JSON file,data.json
:[ { "key": "test_key", "value": "test_value", "expiration_ttl": 3600 }, { "key": "test_key2", "value": "test_value2", "expiration_ttl": 3600 } ]
By calling
wrangler kv:bulk put --binding=KV data.json
, I can quickly create two new keys in Workers KV -test_key
andtest_key2
, with the corresponding valuestest_value
andtest_value2
:$ wrangler kv:bulk put --binding=KV data.json β¨ Success
The KV subcommands in Wrangler 1.3.1 make it super easy to comfortably query and manage your Workers KV data without ever having to leave the command-line. For more information on the available commands and their usage, see the documentation. π€―
-
-
Reduce output from publish command - EverlastingBugstopper, issue/523
This PR improves the messaging of
wrangler publish
.Before:
β¨ Built successfully, built project size is 517 bytes. β¨ Successfully published your script. β¨ Success! Your worker was successfully published. You can view it at example.com/*
After:
$ wrangler publish β¨ Built successfully, built project size is 523 bytes. β¨ Successfully published your script to example.com/*
-
feat #323: Allow fn & promise from webpack config - third774, issue/323
This PR fixes Wrangler's handling of
webpack.config.js
files to support functions and promises, as per the Webpack documentation. -
Use webworker target - xtuc, issue/477
This PR updates how Wrangler builds JavaScript projects with Webpack to conform to the
webworker
build target. This ensures that projects built with Wrangler are less likely to generate code that isn't supported by the Workers runtime.
-
-
-
Have live reload preview watch over entire rust worker directory - gabbifish, pull/535
This change updates the live reload functionality to watch over the entire Rust worker directory, and does not look for
package.json
files that do not typically exist for Rust and WASM projects. -
Fix javascript live preview for linux - gabbifish, issue/517
This PR fixes an issue with Wrangler's live preview (
wrangler preview --watch
) functionality on Linux. In addition, it simplifies the console output for a live preview instance, which could get pretty noisy during development! -
Different emojis for different commands - EverlastingBugstopper, pull/605
KV subcommands would return the same emoji value in
--help
output. This PR updates the command-line output to use different emoji, making the output easier to read!
-
-
-
Add keywords for npm SEO - EverlastingBugstopper, pull/583
This PR improves the discoverability for wrangler on npm by adding keywords to the installer's
package.json
. -
Clean up emoji - xortive, pull/455
This PR removes some extraneous unicode that keeps our emoji from displaying correctly in certain terminal emulators, especially for multi-codepoint emoji.
-
-
-
Add documentation for init to the README - EverlastingBugstopper, pull/585
This PR adds documentation in our README for
wrangler init
, which allows you to begin using an existing project with Wrangler. -
Remove link to docs for installation because they link back to wrangler README - EverlastingBugstopper, pull/494
-
Minor formatting fix in README.md - kentonv, pull/515
This PR fixes a small syntax issue in the Wrangler README, causing Markdown lists to render incorrectly.
-
Fix link to Cloudflare Workers preview service - dentarg, pull/472
This PR fixes a link to the Cloudflare Workers preview service in the Wrangler README.
-
-
-
Implement live previewing for wrangler - xortive, pull/451
The
wrangler preview
command now supports live previewing! As you develop your project, you can start up a link between your local codebase and the preview service by runningwrangler preview --watch
. Any updates to your project will be passed to the preview service, allowing you to instantly see any changes to your project. This is a massive improvement to the development process for building applications with Workers, and we're super excited to ship it!A huge shout-out to @xortive, who almost single-handedly built this feature during his summer internship at Cloudflare, over the last few months. Amazing work! π
-
Authenticate calls to preview service when possible - ashleymichal, issue/423 pull/429
This PR allows developers to use the preview service with account and user-specific functionality, such as KV support inside of the preview service. Previously, attempting to preview a Workers project with KV bindings would cause an error - this PR fixes that, by allowing
wrangler preview
to make authenticated calls to the preview service.
-
-
-
Cleanup README and link to workers docs - EverlastingBugstopper, pull/440
This PR cleans up the README and adds additional links to the Workers documentation to improve consistency around Wrangler documentation.
-
Link to docs for update instructions - ashleymichal, pull/422
We've migrated the "Updating
wrangler
" section of the README to the Workers documentation.
-
-
-
Test maintenance - EverlastingBugstopper, pull/563
This PR cleans up some incorrectly named tests and adds fixtures to support testing new functionality in 1.3.1, such as environments. β¨
-
Guard test against potential races - xtuc, pull/567
This PR fixes a race condition during
wrangler build
that can occur when two builds are taking place at the same time. To fix it, a file lock has been implemented, which Wrangler will wait on until the previous build completes. -
Deny clippy warnings in CI, run rustfmt in --check mode - xortive, issue/426
This PR updates some of the CI steps for testing Wrangler, to make sure that rust-clippy warnings cause CI to fail. This helps Wrangler code stay well-written and consistent - hooray!
-
Add repository link to Cargo.toml - 56quarters, pull/425
-
-
-
Install current version, not latest - ashleygwilliams, issue/418
Previously the NPM installer for wrangler would always pull the most recent release from GitHub releases, and the installer did not increase version numbers when Wrangler did. Many users found this confusing. Now the installer will increment versions along with Wrangler releases, and point at specific versions rather than the most recent one at the time of installation.
-
Improve JSON errors debuggability - xtuc, pull/394
This PR improves JSON error output in
wrangler
. Specifically:-
If a
package.json
file fails to decode,wrangler
now emits a clearer error:$ wrangler build β¬οΈ Installing wranglerjs... β¬οΈ Installing wasm-pack... thread 'main' panicked at 'could not parse "./package.json": Error("expected `,` or `}`", line: 4, column: 3)', src/libcore/result.rs:999:5
-
If the
wranglerjs
backend returns invalid JSON, it now preserves the output file for further investigation. Note that the console doesn't print the output file location by default, and you will need to passRUST_LOG=info
while runningwrangler build
, and search for the--output-file=FILE
argument passed towranglerjs
:$ RUST_LOG=info wrangler build β¬οΈ Installing wasm-pack... [2019-08-09T19:28:48Z INFO wrangler::commands::build::wranglerjs] Running "/Users/kristian/.nvm/versions/node/v12.1.0/bin/node" "/Users/kristian/src/workers/wrangler/wranglerjs" "--output-file=/var/folders/5x/yzqyqst11n518yl8xl7yv1f80000gp/T/.wranglerjs_output5eREv" # ...
-
If the preview service returns invalid JSON, it now emits a clearer error, and the full output can be seen by using
RUST_LOG=info
.Previously:
$ wrangler preview β¬οΈ Installing wasm-pack... β¬οΈ Installing wranglerjs... β¨ Built successfully. Error: Error("expected value", line: 2, column: 1)
Now:
$ wrangler preview β¬οΈ Installing wranglerjs... β¬οΈ Installing wasm-pack... β¨ Built successfully, built project size is 1 MiB. β οΈ Your built project has grown past the 1MiB size limit and may fail to deploy. β οΈ β¨ Error: https://cloudflareworkers.com/script: Server Error: 502 Bad Gateway
-
-
-
-
Fix
wrangler config
for systems with non-unix EOL - xortive, issue/389wrangler config
was not properly truncating whitespace from the end of user input, resulting in a panic when trying to usewrangler publish
, becausewrangler
would try to create an HTTP header with invalid characters. Now,wrangler
will properly truncate extra whitespace (including\r
) from the end of the input intowrangler config
.
-
-
-
Migrate straggler emojis to terminal::emoji - EverlastingBugstopper, pull/382
This PR updates the last remaining instances where
wrangler
was using hard-coded emojis for messages, rather than usingterminal::emoji
. In addition, there are two instances where this PR changes the usage of the β emoji toβ οΈ . -
Move test fixtures to their own directory - EverlastingBugstopper, pull/383
This PR aggregates fixtures used in integration tests into a
fixtures
directory to make it easier to find/use them. -
Update issue templates to fit GitHub's data model - EverlastingBugstopper, pull/387
Our previous issue templates were not picked up by GitHub's user interface. This PR updates the templates to fit the accepted data model, and adds some style tweaks to make the templates easier to use.
-
Move Emoji formatting/messaging into new functions - ashleymichal, pull/391
This PR makes improvements to the internal messaging logic of Wrangler, allowing us to be more flexible in how we display information to users.
-
-
-
Update README to include config, env var changes - ashleymichal, pull/379
In 1.1.0 we changed the
config
command to be interactive. This PR updates the README to reflect that change. -
Add section to readme about Vendored OpenSSL - xortive, pull/407
Wrangler has some external OpenSSL dependencies when installing on Linux -- this PR documents those dependencies, and how to install Wrangler using a vendored OpenSSL feature flag:
cargo install wrangler --features vendored-openssl
-
Wrangler 1.1.0 includes a number of improvements to documentation and project stability, including:
-
-
Change global config perm - xtuc, pull/286
This PR improves the security of Wrangler's global config file, by restricting access to Wrangler's global user configuration file (
~/.wrangler/config/default.toml
) to the user who ran the wrangler config command. For existing Wrangler users, please runwrangler config
again on your machine! This will fix the permissions of your global config file to be scoped to your user account. -
Use stdin instead of arguments for wrangler config - xtuc, pull/329
We've made the
wrangler config
command interactive βΒ the previous version of the command,wrangler config $email $apiKey
, would be captured by your terminal's history, often exposing that information in a~/.bash_history
or a similar file. The new version ofwrangler config
will prompt you for youremail
andapi_key
viastdin
.In addition, this PR also adds support for a
WRANGLER_HOME
environment variable, which will be the location for Wrangler's "home" directory, if you need to customize where Wrangler saves its configuration information.
-
-
-
Support KV Namespace Configuration - ashleymichal, pull/334, add check + error message for pre 1.1.0 kv namespace format - xortive, pull/369
Wrangler now supports using Workers KV namespaces in your project! To start using KV with your projects, create a namespace in the Cloudflare Dashboard, and the namespace information to your
wrangler.toml
configuration file. Thekv-namespaces
key requires setting abinding
(the representation of your namespace in your code) andid
, the namespace ID:# wrangler.toml [[kv-namespaces]] binding = "TODOS" id = "0f2ac74b498b48028cb68387c421e279"
If you were previously using the undocumented
kv-namespaces
support in your project config, you'll need to make a few changes to your project to use Wrangler 1.1.0! KV namespaces now need to be created manually, in the Cloudflare Dashboard, to be able to use them in your Wrangler configuration - previous versions of Wrangler created the namespace for you, but the process is now manual, to allow developers to be more explicit about how their KV namespaces are created.For users of the previously undocumented
kv-namespaces
functionality in Wrangler, we've provided a warning and upgrade path, to help you upgrade your KV configuration in your project to the correct format:β οΈ As of 1.1.0 the kv-namespaces format has been stabilized β οΈ πβ Please add a section like this in your `wrangler.toml` for each KV Namespace you wish to bind: πβ [[kv-namespaces]] binding = "BINDING_NAME" id = "0f2ac74b498b48028cb68387c421e279" # binding is the variable name you wish to bind the namespace to in your script. # id is the namespace_id assigned to your kv namespace upon creation. e.g. (per namespace) Error: β οΈ Your project config has an error β οΈ
This is the initial part of a lot of incredible work being done on supporting Workers KV in Wrangler. If you're interested in what's up next, check out our next milestone.
-
Configure Workers KV in your wrangler.toml - ashleymichal, pull/333
If you've tried to use Workers KV in Wrangler, you've probably had a bad time! This PR, along with #334, build support for handling and correctly uploading KV namespace information with your Wrangler project:
[[kv-namespaces]] binding = "NAMESPACE" id = "0f2ac74b498b48028cb68387c421e279"
-
Use ENV variables to configure Wrangler - AaronO, pull/225
Previously, Wrangler required a global configuration file to be able to run. As many users may use Wrangler in situations where they don't have an interactive terminal, meaning they can't instantiate a config file using
wrangler config
, this PR allows Wrangler to run even if the config file doesn't exist. This change means that users can also configure Wrangler exclusively with environment variables, using$CF_API_KEY
for your Cloudflare API key, and$CF_EMAIL
for your Cloudflare account email. -
Adds more descriptive subdomain errors - EverlastingBugstopper, issue/207
It's super easy to grab a workers.dev subdomain using the
subdomain
command inwrangler
βΒ so easy, in fact, that many people were trying to use it without even having a Cloudflare account!wrangler
now warns users when they attempt to add a subdomain without configuring theiraccount_id
inwrangler.toml
, as well as when you've already registered a subdomain, or if the subdomain you're trying to register has already been claimed. -
Allow custom webpack configuration in wrangler.toml - EverlastingBugstopper, issue/246
If you'd like to bring your own Webpack config to your Workers project, you can now specify a
webpack_config
key inwrangler.toml
:webpack_config: webpack.prod.js
-
Add issue templates for bug reports and feature requests - gabbifish, issue/250
To make it easier for us to diagnose problems and support user feedback, we've added issue templates to make it easier for users to submit bug reports and feature requests.
-
Display commands in their defined order - Electroid, pull/236
We've re-arranged the order of the commands when you run
wrangler
without any subcommands, so that commonly-used commands are easier to find! -
Show project size on build - xtuc, pull/205
Once the build is finished,
wrangler
now prints the compressed size of the script, and, if available, the Wasm binary size:$ wrangler publish β¬οΈ Installing wranglerjs... β¬οΈ Installing wasm-pack... β¨ Built successfully, built project size is 517 bytes. β¨
-
Add HTTP prefix to publish command output. - elithrar, pull/198
Prefix "https://" in front of the "script available" output to allow shells to automatically detect it as a link. Many shells will allow you to click directly on the URL from inside the terminal (such as iTerm's "CMD-Click"), making it much easier to navigate to your subdomains, or any published Workers applications.
-
Build: add message and emoji - xtuc, pull/193
The
wrangler
team really loves emoji, so we made sure to send a little bit of β¨ cheer β¨ your way, via a new message and emoji, whenever you use thebuild
subcommand. π
-
-
-
Remove OpenSSL installation step from README - xortive, issue/355
Due to an OpenSSL dependency in
cargo-generate
, Wrangler required developers to install OpenSSL as part of the setup process for using Wrangler. Version 0.3.1 ofcargo-generate
has removed this requirement, and you no longer need to install OpenSSL manually to use Wrangler. Hooray! -
Fix issue previewing a project with KV namespaces - ashleymichal, pull/353
This PR fixes a critical bug where using
wrangler preview
on a project with Workers KV namespaces causes the command to throw an error. -
Enforce one Webpack entry in configuration - xtuc, pull/245
wrangler
now returns an error during the build process if you use a webpack configuration with more than one export βΒwrangler
needs to have a single known export from webpack to know what to build! -
Update default template for Rust project type - EverlastingBugstopper, pull/309
Previously, when passing
--type rust
towrangler generate
, the only indication that it worked was that the type inwrangler.toml
wasrust
. There were no Rust files in the default template, for a Rust-type project. Now, when runningwrangler generate --type rust
,wrangler
will use rustwasm-worker-template when generating a new project. -
Stop cleaning webpack build artifacts - EverlastingBugstopper, pull/307
The configuration for Webpack projects in Wrangler was over-eager to clean build artifacts, which in the worst-case, caused Wrangler to remove source code for developers' projects - oops! This fix relaxes the Webpack cleaning process, to ensure that building a Wrangler project is a bit safer.
-
Correct binding format - xtuc, pull/260
Previously,
wrangler
was incorrectly sending up abinding
object to the Cloudflare API, whenever we attempted to update a script's bindings. This fix renames it tobindings
, and uses an array, as per the Cloudflare API requirements. -
Correctly pass Wasm module - xtuc, pull/261
To ensure that a wasm module is successfully passed between
wranglerjs
andwrangler
, the wasm module is now encoded and decoded from base64, avoiding any potential loss of data. -
Check for
account_id
andzone_id
before publishing - xtuc, issue/170The
publish
subcommand inwrangler
now ensures that you have anaccount_id
andzone_id
configured in yourwrangler.toml
file before attempting to publish, instead of failing during the publishing process. -
Fix Rust ref issue with
wranglerjs
builds - xtuc, pull/227When
wranglerjs
built a project, it incorrectly referred to the output of that build process without using a Rust reference - this PR fixes that issue and allowswranglerjs
to correctly take your bundle, and your project's metadata, and put it all together in a nice little package to send up to the Cloudflare API. Hooray, working projects!
-
-
-
feat(docs): add CONTRIBUTING.md - ashleygwilliams, pull/268
We've created a shiny new contribution guide to help contributors understand how the project works, and how the team triages incoming issues and feature requests. This should make it easier for us to work through your feedback on Wrangler, as well as give you some insight into how we work. Woo-hoo! π
-
Update README to include KV config info - ashleymichal, pull/319
You can now create Workers KV namespaces from inside of your
wrangler.toml
configuration file - this has been documented in the README. -
Make it more clear that you can install Wrangler though npm - zackbloom, pull/241
-
Document (lightly) the Wrangler 1.0.0 release - signalnerve, pull/204
-
Add README for Wrangler.js package - ashleygwilliams, pull/196
-
-
-
Better error printing - xortive, pull/327
We've updated how we log errors in Wrangler's output to make it a little easier to read. If you're a Rust developer interested in how we did this, check out the pull request!
-
Always use multipart upload - ashleymichal, issue/280
We've updated how Wrangler uploads projects to the Workers runtime - as Wrangler supports the entire Workers ecosystem (including tools like Workers KV, the publishing process should use multipart forms to allow uploading all of the data that represents a Workers project in a single step.
-
unify upload form building - ashleymichal, pull/329
This PR brings consistency to the way that metadata is handled during Wrangler's
preview
andbuild
commands: previously, ametadata.json
file handled the bindings for your Wrangler project, but because it was handled differently for various project types (such aswebpack
orrust
), it led to inconsistent behavior during the upload process. This PR removes usage ofmetadata.json
in favor of building metadata for each project type in-memory, which will then be uploaded directly to Workers platform. This work is foundational for improved Workers KV support in Wrangler π -
wrangler preview
integration tests - EverlastingBugstopper, pull/363Wrangler now includes integration tests for
wrangler preview
, testing every project type that Wrangler supports with our preview service. -
Add user agent - xtuc, issue/234
For every outgoing request,
wrangler
includes aUser-Agent
header to clearly indicate to servers and APIs that awrangler
client is making a request:wrangler/dev
in debug mode andwrangler/$version
in release mode. -
Terminal messaging abstraction - ashleymichal, issue/219
We've made improvements to Wrangler's terminal output functionality, with support for various log levels and implementations in Wrangler's API for easily using the log levels in future development.
The new terminal output functionality can be used by importing the
terminal::message
crate:use crate::terminal::message; message::info("Building project") // "πβ Building project" message::success("Your project has been deployed!") // "β¨ Your project has been deployed!" // Other available functions: // message::warn, message::user_error, message::working, message::preview
-
Remove pre-push hooks - EverlastingBugstopper, pull/308
Previous versions of Wrangler included pre-push hooks to ensure that code was linted before being pushed up to Git. This hook made it difficult to manage in-progress work, so the hooks have been removed.
-
Use serde for metadata - xtuc, pull/285
This change adds proper construction of the worker metadata, previously, it was an error-prone string.
-
Refactor: Conditional per command in main - ashleymichal, pull/279
The
src/main.rs
file in Wrangler has been rewritten so that the layout of the file is easier to read. -
Add an authenticated HTTP client - Electroid, issue/238
All HTTP requests to the Cloudflare API are now made with an authenticated HTTP client.
-
Pin webpack version - xtuc, pull/228
Adds a better control over webpack's version, avoiding possible upstream issues.
-
Wrangler 1.0.0 has been released! The first major version of Wrangler makes the tool the preferred development and deployment tool for JavaScript and Rust projects to the Cloudflare Workers platform.
This release includes many changes to the developer experience for Wrangler, including:
- Support for installing wrangler via npm:
npm install @cloudflare/wrangler -g
. - Support for various project types, including
javascript
andwebpack
.- The default project type for Wrangler is now
webpack
.
- The default project type for Wrangler is now
- Support for creating and binding Workers KV namespaces via your project's configuration file.
- Enhancements to error messages and validation of your project before building and deploying.
- Fixes for Windows usage of Wrangler.
- Fixes for cross-platform console output.
-
-
Fix
publish
andpreview
bug for projects with a-
- jaysonsantos, issue/36Rust is a sometimes surprisingly opinionated language! When your
Cargo.toml
specifies a project name with a hyphen(-
) in the name, the Rust compiler will implicitly understand this as a_
for all imports and when it creates compiled artifacts it will name them with a_
.The original implementation of
wrangler
skipped over this, and as a result would go looking for a wasm file with a-
when it should have been looking for a_
. This resulted in a bit of a gross error message that stated that a file was not found.We've fixed this now- so go ahead and name your packages with
-
s!
-
-
-
Install instructions with OpenSSL troubleshooting notes - AustinCorridor, issue/35
Because of
wrangler
's use ofcargo-generate
we use OpenSSL. Classically, this is a tricky dependency. Some users may run into issue with it! We've documented the steps to fix it on MacOS- if you run into this on other platforms, we'd love a PR! -
Typo and casing fixes - neynah, pull/42
First releases almost always have some typos. Now they're fixed!
-
-
π Hello World!