summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.changeset/afraid-apricots-buy.md20
-rw-r--r--.changeset/giant-rocks-thank.md21
-rw-r--r--.changeset/poor-dots-add.md7
3 files changed, 48 insertions, 0 deletions
diff --git a/.changeset/afraid-apricots-buy.md b/.changeset/afraid-apricots-buy.md
new file mode 100644
index 000000000..8be7e9db8
--- /dev/null
+++ b/.changeset/afraid-apricots-buy.md
@@ -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.
diff --git a/.changeset/giant-rocks-thank.md b/.changeset/giant-rocks-thank.md
new file mode 100644
index 000000000..920933351
--- /dev/null
+++ b/.changeset/giant-rocks-thank.md
@@ -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.
diff --git a/.changeset/poor-dots-add.md b/.changeset/poor-dots-add.md
new file mode 100644
index 000000000..088498eee
--- /dev/null
+++ b/.changeset/poor-dots-add.md
@@ -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).