Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support service bindings from Pages projects to workers in a single workerd instance #7715

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

penalosa
Copy link
Contributor

Fixes #5918

As of #7251, Wrangler has supported configuring multiple Workers to run in the same workerd instance (with service bindings between them) using multiple -c flags. However, this didn't work for Pages.

This PR adds support for Pages, using the same API as for regular Workers: wrangler pages dev -c wrangler.toml ../other-worker/wrangler.toml. However, a slight difference with Pages (compared to regular Workers) is that you can't customise the location of the Pages config file. As such, the first -c argument must point to the config file for the Pages project, and must be located in the project root. We could've omitted this entirely, but it felt like it would be more confusing to implicitly read a config file that wasn't mentioned—open to dissenting opinions here!

This PR also shifts wrangler pages dev to use startDev() directly rather than going through unstable_dev(), opening the door to removing unstable_dev() entirely in the future.


  • Tests
    • TODO (before merge)
    • Tests included
    • Tests not necessary because:
  • E2E Tests CI Job required? (Use "e2e" label or ask maintainer to run separately)
    • I don't know
    • Required
    • Not required because:
  • Public documentation
    • TODO (before merge)
    • Cloudflare docs PR(s):
    • Documentation not necessary because:

Copy link

changeset-bot bot commented Jan 10, 2025

🦋 Changeset detected

Latest commit: 67483fb

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 2 packages
Name Type
wrangler Patch
@cloudflare/vitest-pool-workers Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@workers-devprod workers-devprod added the e2e Run e2e tests on a PR label Jan 10, 2025
@penalosa penalosa force-pushed the penalosa/multiworker-pages branch from 67e5d95 to 08bc217 Compare January 10, 2025 02:59
Copy link
Contributor

github-actions bot commented Jan 10, 2025

A wrangler prerelease is available for testing. You can install this latest build in your project with:

npm install --save-dev https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/12710649658/npm-package-wrangler-7715

You can reference the automatically updated head of this PR with:

npm install --save-dev https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/prs/7715/npm-package-wrangler-7715

Or you can use npx with this latest build directly:

npx https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/12710649658/npm-package-wrangler-7715 dev path/to/script.js
Additional artifacts:

cloudflare-workers-bindings-extension:

wget https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/12710649658/npm-package-cloudflare-workers-bindings-extension-7715 -O ./cloudflare-workers-bindings-extension.0.0.0-vf8c8eb4d6.vsix && code --install-extension ./cloudflare-workers-bindings-extension.0.0.0-vf8c8eb4d6.vsix

create-cloudflare:

npx https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/12710649658/npm-package-create-cloudflare-7715 --no-auto-update

@cloudflare/kv-asset-handler:

npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/12710649658/npm-package-cloudflare-kv-asset-handler-7715

miniflare:

npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/12710649658/npm-package-miniflare-7715

@cloudflare/pages-shared:

npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/12710649658/npm-package-cloudflare-pages-shared-7715

@cloudflare/unenv-preset:

npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/12710649658/npm-package-cloudflare-unenv-preset-7715

@cloudflare/vitest-pool-workers:

npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/12710649658/npm-package-cloudflare-vitest-pool-workers-7715

@cloudflare/workers-editor-shared:

npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/12710649658/npm-package-cloudflare-workers-editor-shared-7715

@cloudflare/workers-shared:

npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/12710649658/npm-package-cloudflare-workers-shared-7715

@cloudflare/workflows-shared:

npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/12710649658/npm-package-cloudflare-workflows-shared-7715

Note that these links will no longer work once the GitHub Actions artifact expires.


[email protected] includes the following runtime dependencies:

Package Constraint Resolved
miniflare workspace:* 3.20241230.1
workerd 1.20241230.0 1.20241230.0
workerd --version 1.20241230.0 2024-12-30

Please ensure constraints are pinned, and miniflare/workerd minor versions match.

@penalosa penalosa marked this pull request as ready for review January 10, 2025 12:17
@penalosa penalosa requested review from a team as code owners January 10, 2025 12:17
Copy link
Contributor

@emily-shen emily-shen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we error helpfully if someone tries to run wrangler dev and one of the provided config files is a pages config?

otherwise very excited about pages going through start_dev!

@penalosa
Copy link
Contributor Author

can we error helpfully if someone tries to run wrangler dev and one of the provided config files is a pages config?

Added!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
e2e Run e2e tests on a PR
Projects
Status: Untriaged
Development

Successfully merging this pull request may close these issues.

🚀 Feature Request:RPC Support for Durable Objects in wrangler dev
3 participants