diff --git a/.changeset/angry-suits-thank.md b/.changeset/angry-suits-thank.md new file mode 100644 index 000000000000..8c99427301f1 --- /dev/null +++ b/.changeset/angry-suits-thank.md @@ -0,0 +1,5 @@ +--- +'@astrojs/netlify': patch +--- + +Add human-readable error when a site is not provided in your astro.config diff --git a/packages/integrations/netlify/readme.md b/packages/integrations/netlify/readme.md index 24fdb51877af..3e9d7879b00b 100644 --- a/packages/integrations/netlify/readme.md +++ b/packages/integrations/netlify/readme.md @@ -2,14 +2,18 @@ Deploy your server-side rendered (SSR) Astro app to [Netlify](https://www.netlify.com/). -Use this adapter in your Astro configuration file: +Use this adapter in your Astro configuration file, alongside a valid deployment URL: ```js import { defineConfig } from 'astro/config'; import netlify from '@astrojs/netlify/functions'; export default defineConfig({ - adapter: netlify() + adapter: netlify(), + // Where your Netlify app will be deployed. + // Feel free to use a local URL (i.e. http://localhost:8080) + // to test local builds via the netlify CLI + site: 'https://my-production-url.netlify.app', }); ``` @@ -23,7 +27,9 @@ netlify deploy ## Configuration -The output folder is configuration with the `dist` property when creating the adapter. +### dist + +We build to a `netlify` directory at the base of your project. To change this, use the `dist` option: ```js import { defineConfig } from 'astro/config'; diff --git a/packages/integrations/netlify/src/index.ts b/packages/integrations/netlify/src/index.ts index e7fb72633b89..181303e33a8d 100644 --- a/packages/integrations/netlify/src/index.ts +++ b/packages/integrations/netlify/src/index.ts @@ -28,7 +28,15 @@ function netlifyFunctions({ dist }: NetlifyFunctionsOptions = {}): AstroIntegrat } }, 'astro:config:done': ({ config, setAdapter }) => { - setAdapter(getAdapter(new URL(config.base, config.site).toString())); + let site = null; + try { + site = new URL(config.base, config.site); + } catch { + throw new Error( + 'The Netlify adapter requires a deployment URL. Ensure a "site" is specified in your astro.config. If you provided a "base" in your astro.config, ensure it is a valid path.' + ); + } + setAdapter(getAdapter(site.toString())); _config = config; }, 'astro:build:start': async ({ buildConfig }) => {