Add support for Images bindings, with dynamic Sharp import#8008
Add support for Images bindings, with dynamic Sharp import#8008emily-shen merged 6 commits intocloudflare:mainfrom
Conversation
🦋 Changeset detectedLatest commit: 62e8781 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/13139549549/npm-package-wrangler-8008You can reference the automatically updated head of this PR with: npm install --save-dev https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/prs/8008/npm-package-wrangler-8008Or you can use npx https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13139549549/npm-package-wrangler-8008 dev path/to/script.jsAdditional artifacts:cloudflare-workers-bindings-extension: wget https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13139549549/npm-package-cloudflare-workers-bindings-extension-8008 -O ./cloudflare-workers-bindings-extension.0.0.0-v3843da1d0.vsix && code --install-extension ./cloudflare-workers-bindings-extension.0.0.0-v3843da1d0.vsixcreate-cloudflare: npx https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13139549549/npm-package-create-cloudflare-8008 --no-auto-update@cloudflare/kv-asset-handler: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13139549549/npm-package-cloudflare-kv-asset-handler-8008miniflare: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13139549549/npm-package-miniflare-8008@cloudflare/pages-shared: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13139549549/npm-package-cloudflare-pages-shared-8008@cloudflare/unenv-preset: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13139549549/npm-package-cloudflare-unenv-preset-8008@cloudflare/vite-plugin: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13139549549/npm-package-cloudflare-vite-plugin-8008@cloudflare/vitest-pool-workers: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13139549549/npm-package-cloudflare-vitest-pool-workers-8008@cloudflare/workers-editor-shared: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13139549549/npm-package-cloudflare-workers-editor-shared-8008@cloudflare/workers-shared: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13139549549/npm-package-cloudflare-workers-shared-8008@cloudflare/workflows-shared: npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13139549549/npm-package-cloudflare-workflows-shared-8008Note that these links will no longer work once the GitHub Actions artifact expires.
Please ensure constraints are pinned, and |
|
I have tested the prerelease version locally with node 16 and I can confirm the issue with sharp is gone: With prerelease version: > npx https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13112532233/npm-package-wrangler-8008 --help
Need to install the following packages:
https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/13112532233/npm-package-wrangler-8008
Ok to proceed? (y)
npm WARN deprecated rollup-plugin-inject@3.0.2: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject.
npm WARN deprecated sourcemap-codec@1.4.8: Please use @jridgewell/sourcemap-codec instead
wrangler
COMMANDS
wrangler docs [search..] 📚 Open Wrangler's command documentation in your browser
...With v3.107.1: > npx wrangler@3.107.1 --help
Need to install the following packages:
wrangler@3.107.1
Ok to proceed? (y)
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE package: 'sharp@0.33.5',
npm WARN EBADENGINE required: { node: '^18.17.0 || ^20.3.0 || >=21.0.0' },
npm WARN EBADENGINE current: { node: 'v16.20.2', npm: '8.19.4' }
npm WARN EBADENGINE }
npm WARN deprecated rollup-plugin-inject@3.0.2: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject.
npm WARN deprecated sourcemap-codec@1.4.8: Please use @jridgewell/sourcemap-codec instead
npm WARN deprecated wrangler@3.107.1: Please downgrade to v3.106.0
/Users/edmund/.npm/_npx/368e997908476be9/node_modules/sharp/lib/sharp.js:113
throw new Error(help.join('\n'));
^
Error: Could not load the "sharp" module using the darwin-arm64 runtime
Possible solutions:
- Please upgrade Node.js:
Found 16.20.2
Requires ^18.17.0 || ^20.3.0 || >=21.0.0
- Consult the installation documentation:
See https://sharp.pixelplumbing.com/install
at Object.<anonymous> (/Users/edmund/.npm/_npx/368e997908476be9/node_modules/sharp/lib/sharp.js:113:9)
... |
|
You might need to rebase main as we have just landed some changes that improves our test setup 👍🏼 |
* Add Images binding * Add Images remote preview mode * Plumb images local mode flag through * Add Images binding local mode * Add Images E2E test * Hoist @img packages This fixes the fixture tests, perhaps because sharp does something unusual with imports, see GH comment: nuxt/image#1210 (comment) * Add local suffix when printing bindings * Swap describe/it in E2E test * Mark sharp as unbundled, rather than hoisting * Remove zod * Improve error messages
We want everything that doesn't depend on sharp to work if it is unavailable, so we need to import it dynamically.
Co-authored-by: Edmund Hung <me@edmund.dev>
f5d256d to
62e8781
Compare
emily-shen
left a comment
There was a problem hiding this comment.
I've also tested it in node 16 and 19, and wrangler dev seems to run fine.
Third time lucky!
Previous attempts:
#7424 - Reverted because of a missing permission in E2E tests
#7945 - Reverted because some platforms we support don't have Sharp available
These are both now fixed.