cloudflare / workers-sdk

⛅️ Home to Wrangler, the CLI for Cloudflare Workers®
https://developers.cloudflare.com/workers/
Apache License 2.0
2.41k stars 590 forks source link

feature: alias modules in the worker #6167

Closed threepointone closed 2 days ago

threepointone commented 2 days ago

Sometimes, users want to replace modules with other modules. This commonly happens inside a third party dependency itself. As an example, a user might have imported node-fetch, which will probably never work in workerd. You can use the alias config to replace any of these imports with a module of your choice.

Let's say you make a fetch-nolyfill.js

export default fetch; // all this does is export the standard fetch function`

You can then configure wrangler.toml like so:

[alias]
"node-fetch" = "./fetch-nolyfill"

So any calls to import fetch from 'node-fetch'; will simply use our nolyfilled version.

You can also pass aliases in the cli (for both dev and deploy). Like:

npx wrangler dev --alias node-fetch:./fetch-nolyfill

Author has addressed the following

changeset-bot[bot] commented 2 days ago

🦋 Changeset detected

Latest commit: 7799cede259be0de888b852b2dbd8864732111c3

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

github-actions[bot] commented 2 days ago

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/9713989200/npm-package-wrangler-6167

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

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

Or you can use npx with this latest build directly:

npx https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/9713989200/npm-package-wrangler-6167 dev path/to/script.js
Additional artifacts: ```sh npx https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/9713989200/npm-package-create-cloudflare-6167 --no-auto-update ``` ```sh npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/9713989200/npm-package-cloudflare-kv-asset-handler-6167 ``` ```sh npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/9713989200/npm-package-miniflare-6167 ``` ```sh npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/9713989200/npm-package-cloudflare-pages-shared-6167 ``` ```sh npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/9713989200/npm-package-cloudflare-vitest-pool-workers-6167 ``` Note that these links will no longer work once [the GitHub Actions artifact expires](https://docs.github.com/en/organizations/managing-organization-settings/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-organization).

wrangler@3.62.0 includes the following runtime dependencies:

Package Constraint Resolved
miniflare workspace:* 3.20240620.0
workerd 1.20240620.1 1.20240620.1
workerd --version 1.20240620.1 2024-06-20

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