# @sladg/nextjs-image-optimizer-handler

> Plug-and-play lambda for replacing default NextJS image optimization handler.

Latest version **0.3.0** (published 2022-08-04) · ISC license · 0 weekly downloads

> **Deprecated.** This package is deprecated.

## Install

```sh
npm install @sladg/nextjs-image-optimizer-handler
pnpm add @sladg/nextjs-image-optimizer-handler
yarn add @sladg/nextjs-image-optimizer-handler
bun add @sladg/nextjs-image-optimizer-handler
```

## Health

**Score 10/100 (F)** — status: deprecated.

Negative: deprecated.

## Facts

| | |
|---|---|
| Version | 0.3.0 |
| Published | 2022-08-04 |
| First published | 2022-08-04 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | ESM + CommonJS |
| Node | >=16 |
| Dependencies | 1 |
| Unpacked size | 12.6 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 175 |
| Author | Jan Soukup |
| Maintainers | sladg |

## Links

- npm: https://www.npmjs.com/package/@sladg/nextjs-image-optimizer-handler
- Repository: https://github.com/sladg/nextjs-image-optimizer-handler
- Homepage: https://github.com/sladg/nextjs-image-optimizer-handler#readme
- Issues: https://github.com/sladg/nextjs-image-optimizer-handler/issues
- npm.io page: https://npm.io/package/@sladg/nextjs-image-optimizer-handler

## Dependencies (1)

- [@aws-sdk/client-s3](https://npm.io/package/@aws-sdk/client-s3.md) ^3.142.0

## Recent versions

- 0.3.0 (latest) — 2022-08-04
- 0.2.0 — 2022-08-04
- 0.1.0 — 2022-08-04
- 0.0.1 — 2022-08-04

## README

# NextJS Image Optimizer Handler

This is a wrapper for `next/server/image-optimizer` allowing to use S3.

It is intended to be used with `nextjs` deployments to Lambda.

## Usage

Create new lambda function with NODE_16 runtime in AWS.
Use

```
const sharpLayer: LayerVersion
const assetsBucket: Bucket

const code = require.resolve('@sladg/nextjs-image-optimizer-handler/zip')

const imageOptimizerFn = new Function(this, 'LambdaFunction', {
      code: Code.fromAsset(code),
      runtime: Runtime.NODEJS_16_X,
      handler: 'index.handler',
      layers: [sharpLayer],
      memorySize: 1024,
      timeout: Duration.seconds(15),
      environment: {
        S3_BUCKET_SOURCE: assetsBucket.bucketName
      }
    })
```

Lambda consumes Api Gateway requests, so we need to create ApiGw proxy (v2) that will trigger Lambda.

Lambda is designed to serve `_next/image*` route in NextJS stack and replaces the default handler so we can optimize caching and memory limits for page renders and image optimization.

## Sharp

Besides handler (wrapper) itself, underlying NextJS also requires sharp binaries.
To build those, we use `npm install` with some extra parametes. Then we zip all sharp dependencies and compress it to easily importable zip file.

```
const code = require.resolve('@sladg/nextjs-image-optimizer-handler/sharp-layer')

const sharpLayer = new LayerVersion(this, 'SharpLayer', {
  code: Code.fromAsset(code)
})
```

## Notes

This is part of NextJS to Lambda deployment process. More info to follow.

---
_Source: https://npm.io/package/@sladg/nextjs-image-optimizer-handler · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
