feature: alias modules in the worker#6167
Conversation
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` ```ts export default fetch; // all this does is export the standard fetch function` ``` You can then configure `wrangler.toml` like so: ```toml [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: ```bash npx wrangler dev --alias node-fetch:./fetch-nolyfill ```
🦋 Changeset detectedLatest commit: 7799ced The changes in this PR will be included in the next version bump. This PR includes changesets to release 2 packages
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 |
|
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-6167You 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-6167Or you can use npx https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/9713989200/npm-package-wrangler-6167 dev path/to/script.jsAdditional artifacts:npx https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/9713989200/npm-package-create-cloudflare-6167 --no-auto-updatenpm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/9713989200/npm-package-cloudflare-kv-asset-handler-6167npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/9713989200/npm-package-miniflare-6167npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/9713989200/npm-package-cloudflare-pages-shared-6167npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/9713989200/npm-package-cloudflare-vitest-pool-workers-6167Note that these links will no longer work once the GitHub Actions artifact expires.
Please ensure constraints are pinned, and |
|
Is the reason this only works for Workers but not Pages...
Similar to #6511, trying to make sure we don't add to the set of difference between Workers/Pages where we can avoid it. And with Workers Assets — will be people doing something akin to |
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.jsYou can then configure
wrangler.tomllike so: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
devanddeploy). Like:Author has addressed the following