mirror of
https://github.com/withastro/astro.git
synced 2024-12-16 21:46:22 -05:00
feat: changesets for the hybrid removal (#11941)
* feat: changesets for the hybrid removal * Update .changeset/afraid-apricots-buy.md Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca> * Apply suggestions from code review Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca> --------- Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
This commit is contained in:
parent
d7e950f35f
commit
b6a5f39846
3 changed files with 48 additions and 0 deletions
20
.changeset/afraid-apricots-buy.md
Normal file
20
.changeset/afraid-apricots-buy.md
Normal file
|
@ -0,0 +1,20 @@
|
|||
---
|
||||
'astro': minor
|
||||
---
|
||||
|
||||
Adapters can now specify the build output type they're intended for using the `adapterFeatures.buildOutput` property. This property can be used to always generate a server output, even if the project doesn't have any server-rendered pages.
|
||||
|
||||
```ts
|
||||
{
|
||||
'astro:config:done': ({ setAdapter, config }) => {
|
||||
setAdapter({
|
||||
name: 'my-adapter',
|
||||
adapterFeatures: {
|
||||
buildOutput: 'server',
|
||||
},
|
||||
});
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
If your adapter specifies `buildOutput: 'static'`, and the user's project contains server-rendered pages, Astro will warn in development and error at build time. Note that a hybrid output, containing both static and server-rendered pages, is considered to be a `server` output, as a server is required to serve the server-rendered pages.
|
21
.changeset/giant-rocks-thank.md
Normal file
21
.changeset/giant-rocks-thank.md
Normal file
|
@ -0,0 +1,21 @@
|
|||
---
|
||||
'astro': major
|
||||
---
|
||||
|
||||
Merges the `output: 'hybrid'` and `output: 'static'` configurations into one single configuration (now called `'static'`) that works the same way as the previous `hybrid` option.
|
||||
|
||||
It is no longer necessary to specify `output: 'hybrid'` in your Astro config to use server-rendered pages. The new `output: 'static'` has this capability included. Astro will now automatically provide the ability to opt out of prerendering in your static site with no change to your `output` configuration required. Any page route or endpoint can include `export const prerender = false` to be server-rendered, while the rest of your site is statically-generated.
|
||||
|
||||
If your project used hybrid rendering, you must now remove the `output: 'hybrid'` option from your Astro config as it no longer exists. However, no other changes to your project are required, and you should have no breaking changes. The previous `'hybrid'` behavior is now the default, under a new name `'static'`.
|
||||
|
||||
If you were using the `output: 'static'` (default) option, you can continue to use it as before. By default, all of your pages will continue to be prerendered and you will have a completely static site. You should have no breaking changes to your project.
|
||||
|
||||
```diff
|
||||
import { defineConfig } from "astro/config";
|
||||
|
||||
export default defineConfig({
|
||||
- output: 'hybrid',
|
||||
});
|
||||
```
|
||||
|
||||
An adapter is still required to deploy an Astro project with any server-rendered pages. Failure to include an adapter will result in a warning in development and an error at build time.
|
7
.changeset/poor-dots-add.md
Normal file
7
.changeset/poor-dots-add.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
'astro': minor
|
||||
---
|
||||
|
||||
Adds a new `buildOutput` property to the `astro:config:done` hook returning the build output type.
|
||||
|
||||
This can be used to know if the user's project will be built as a static site (HTML files), or a server-rendered site (whose exact output depends on the adapter).
|
Loading…
Reference in a new issue