From 80bf81a3cf8a99f569210670fe618f0b7cdc1d23 Mon Sep 17 00:00:00 2001 From: Steven Date: Wed, 21 Oct 2020 06:21:42 -0400 Subject: [PATCH] Move sharp to optionalDependencies (#18068) Co-authored-by: Tim Neutkens --- errors/install-sharp.md | 17 +++++++++++++++-- .../next/next-server/server/image-optimizer.ts | 9 +++++---- packages/next/package.json | 4 +++- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/errors/install-sharp.md b/errors/install-sharp.md index addd72914f..168d23082c 100644 --- a/errors/install-sharp.md +++ b/errors/install-sharp.md @@ -2,14 +2,27 @@ #### Why This Error Occurred -Using Next.js' built-in Image Optimization requires that you bring your own version of `sharp`. +Using Next.js' built-in Image Optimization requires that you install `sharp`. + +Since `sharp` is optional, it may have been skipped if you installed `next` with the [`--no-optional`](https://docs.npmjs.com/cli/install) flag or it may have been skipped if your platform does not support `sharp`. #### Possible Ways to Fix It -Please install the `sharp` package in your project. +Option 1: Install the `sharp` package in your project. ```bash npm i sharp # or yarn add sharp ``` + +Option 2: Configure an external loader in `next.config.js` such as [imgix](https://imgix.com). + +```js +module.exports = { + images: { + path: 'https://example.com/myaccount/', + loader: 'imgix', + }, +} +``` diff --git a/packages/next/next-server/server/image-optimizer.ts b/packages/next/next-server/server/image-optimizer.ts index 9e01f94d34..5d7047904f 100644 --- a/packages/next/next-server/server/image-optimizer.ts +++ b/packages/next/next-server/server/image-optimizer.ts @@ -229,11 +229,12 @@ export async function imageOptimizer( sharp = require('sharp') } catch (error) { if (error.code === 'MODULE_NOT_FOUND') { - error.message += - "\nTo use Next.js' built-in Image Optimization, you first need to install `sharp`." - error.message += - '\nRun `npm i sharp` or `yarn add sharp` inside your workspace.' error.message += '\n\nLearn more: https://err.sh/next.js/install-sharp' + server.logError(error) + if (upstreamType) { + res.setHeader('Content-Type', upstreamType) + } + res.end(upstreamBuffer) } throw error } diff --git a/packages/next/package.json b/packages/next/package.json index 6e59d15947..9145607e8f 100644 --- a/packages/next/package.json +++ b/packages/next/package.json @@ -125,6 +125,9 @@ "react": "^16.6.0", "react-dom": "^16.6.0" }, + "optionalDependencies": { + "sharp": "0.26.2" + }, "devDependencies": { "@next/polyfill-nomodule": "9.5.6-canary.9", "@taskr/clear": "1.1.0", @@ -205,7 +208,6 @@ "resolve": "1.11.0", "semver": "7.3.2", "send": "0.17.1", - "sharp": "0.26.2", "source-map": "0.6.1", "string-hash": "1.1.3", "strip-ansi": "6.0.0", -- GitLab