on-demand image optimization for Netlify
npm install @netlify/ipx> On Demand image optimization for Netlify using ipx.
😺 Online demo: https://netlify-ipx.netlify.app
Add @netlify/ipx as devDependency:
``shnpm
npm i -D @netlify/ipx
Create
netlify/functions/ipx.ts:`ts
import { createIPXHandler } from "@netlify/ipx";export const handler = createIPXHandler({
domains: ["images.unsplash.com"],
});
`Now you can use IPX to optimize both local and remote assets ✨
Resize
/test.jpg (in dist):`html

`Resize and change format for a remote url:
`html
src="/.netlify/functions/ipx/f_webp,w_450/https://images.unsplash.com/photo-1514888286974-6c03e2ca1dba"
/>
`Remote Patterns
Instead of setting an allowlist on
domains, you may wish to use the option remotePatterns. This method allows wildcards in hostname and pathname segments.remotePatterns is an array that contains RemotePattern objects:`ts
remotePatterns: [
{
protocol: 'https' // or 'http' - not required
hostname: 'example.com' // required
port: '3000' // not required
pathname: '/blog/**' // not required
}
]
`To use remote patterns, create
netlify/functions/ipx.ts:`ts
import { createIPXHandler } from "@netlify/ipx";export const handler = createIPXHandler({
remotePatterns: [
{
protocol: "https",
hostname: "images.unsplash.com",
},
],
});
`hostname and pathname may contain wildcards:`ts
remotePatterns: [
{
hostname: '.example.com' // = match a single path segment or subdomain
pathname: '/blog/' // = match any number of path segments or subdomains
}
]
`Local development
- Clone repository
- Install dependencies with
yarn install
- Build the project with yarn build
- Run netlify development server with yarn dev`. MIT