astro/.changeset/pretty-bears-deliver.md

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

48 lines
1.1 KiB
Markdown
Raw Normal View History

---
'astro': minor
---
Implements a new experimental middleware in Astro.
The middleware is available under the following experimental flag:
```js
export default defineConfig({
experimental: {
middleware: true
}
})
```
Or via CLI, using the new argument `--experimental-middleware`.
Create a file called `middleware.{js,ts}` inside the `src` folder, and
export a `onRequest` function.
From `astro/middleware`, use the `defineMiddleware` utility to take advantage of type-safety, and use
the `sequence` utility to chain multiple middleware functions.
Example:
```ts
import {defineMiddleware, sequence} from "astro/middleware";
const redirects = defineMiddleware((context, next) => {
if (context.request.url.endsWith("/old-url")) {
return context.redirect("/new-url")
}
return next();
});
const minify = defineMiddleware(async (context, next) => {
const repsonse = await next();
const minifiedHtml = await minifyHtml(response.text());
return new Response(minifiedHtml, {
status: 200,
headers: response.headers
});
})
export const onRequest = sequence(redirects, minify);
```