diff --git a/src/content/docs/en/guides/integrations-guide/cloudflare.mdx b/src/content/docs/en/guides/integrations-guide/cloudflare.mdx index 5ca718d01f493..ad25f7af40974 100644 --- a/src/content/docs/en/guides/integrations-guide/cloudflare.mdx +++ b/src/content/docs/en/guides/integrations-guide/cloudflare.mdx @@ -65,23 +65,37 @@ export default defineConfig({ default `"advanced"` -Cloudflare Pages has 2 different modes for deploying functions, `advanced` mode which picks up the `_worker.js` in `dist`, or a directory mode where pages will compile the worker out of a functions folder in the project root. +Cloudflare Pages has 2 different modes for deploying functions, `advanced` mode which picks up the `_worker.js` in `dist`, or a directory mode where pages will compile the worker out of a functions folder in the project root. For most projects the adapter default of `advanced` will be sufficient; the `dist` folder will contain your compiled project. -For most projects the adapter default of `advanced` will be sufficient; the `dist` folder will contain your compiled project. Switching to directory mode allows you to use [pages plugins](https://developers.cloudflare.com/pages/platform/functions/plugins/) such as [Sentry](https://developers.cloudflare.com/pages/platform/functions/plugins/sentry/) or write custom code to enable logging. +#### `mode:directory` -In directory mode, the adapter will compile the client side part of your app the same way by default, but moves the worker script into a `functions` folder in the project root. In this case, the adapter will only ever place a `[[path]].js` in that folder, allowing you to add additional plugins and pages middleware which can be checked into version control. - -With the build configuration `split: true`, the adapter instead compiles a separate bundle for each page. This option requires some manual maintenance of the `functions` folder. Files emitted by Astro will overwrite existing `functions` files with identical names, so you must choose unique file names for each file you manually add. Additionally, the adapter will never empty the `functions` folder of outdated files, so you must clean up the folder manually when you remove pages. - -Note that this adapter does not support using [Cloudflare Pages Middleware](https://developers.cloudflare.com/pages/platform/functions/middleware/). Astro will bundle the [Astro middleware](/en/guides/middleware/) into each page. +Switching to directory mode allows you to use [pages plugins](https://developers.cloudflare.com/pages/platform/functions/plugins/) such as [Sentry](https://developers.cloudflare.com/pages/platform/functions/plugins/sentry/) or write custom code to enable logging. ```ts -// directory mode +// astro.config.mjs export default defineConfig({ adapter: cloudflare({ mode: 'directory' }), }); ``` +In `directory` mode, the adapter will compile the client-side part of your app the same way as in `advanced` mode by default, but moves the worker script into a `functions` folder in the project root. In this case, the adapter will only ever place a `[[path]].js` in that folder, allowing you to add additional plugins and pages middleware which can be checked into version control. + +To instead compile a separate bundle for each page, set the `functionPerPath` option in your Cloudflare adapter config. This option requires some manual maintenance of the `functions` folder. Files emitted by Astro will overwrite existing `functions` files with identical names, so you must choose unique file names for each file you manually add. Additionally, the adapter will never empty the `functions` folder of outdated files, so you must clean up the folder manually when you remove pages. + +```diff +import {defineConfig} from "astro/config"; +import cloudflare from '@astrojs/cloudflare'; + +export default defineConfig({ + adapter: cloudflare({ + mode: 'directory', ++ functionPerRoute: true + }) +}) +``` + +Note that this adapter does not support using [Cloudflare Pages Middleware](https://developers.cloudflare.com/pages/platform/functions/middleware/). Astro will bundle the [Astro middleware](/en/guides/middleware/) into each page. + ## Enabling Preview In order for preview to work you must install `wrangler` diff --git a/src/content/docs/en/guides/integrations-guide/netlify.mdx b/src/content/docs/en/guides/integrations-guide/netlify.mdx index 7cd84245495bf..92aaf98279218 100644 --- a/src/content/docs/en/guides/integrations-guide/netlify.mdx +++ b/src/content/docs/en/guides/integrations-guide/netlify.mdx @@ -67,28 +67,11 @@ If you prefer to install the adapter manually instead, complete the following tw }); ``` -### Edge Functions - -Netlify has two serverless platforms, [Netlify Functions](https://docs.netlify.com/functions/overview/) and [Netlify Edge Functions](https://docs.netlify.com/edge-functions/overview/). With Edge Functions your code is distributed closer to your users, lowering latency. - -To deploy with Edge Functions, use `netlify/edge-functions` in the Astro config file instead of `netlify/functions`. - -```js ins={3} -// astro.config.mjs -import { defineConfig } from 'astro/config'; -import netlify from '@astrojs/netlify/edge-functions'; - -export default defineConfig({ - output: 'server', - adapter: netlify(), -}); -``` - ### Run middleware in Edge Functions When deploying to Netlify Functions, you can choose to use an Edge Function to run your Astro middleware. -To enable this, set the `build.excludeMiddleware` Astro config option to `true`: +To enable this, set the `edgeMiddleware` config option to `true`: ```js ins={9} // astro.config.mjs @@ -97,10 +80,9 @@ import netlify from '@astrojs/netlify/functions'; export default defineConfig({ output: 'server', - adapter: netlify(), - build: { - excludeMiddleware: true, - }, + adapter: netlify({ + edgeMiddleware: true, + }), }); ``` @@ -146,10 +128,9 @@ import netlify from '@astrojs/netlify/functions'; export default defineConfig({ output: 'server', - adapter: netlify(), - build: { - split: true, - }, + adapter: netlify({ + functionPerRoute: true, + }), }); ``` diff --git a/src/content/docs/en/guides/integrations-guide/node.mdx b/src/content/docs/en/guides/integrations-guide/node.mdx index bb864e82e5f2b..840eb4ddf37bd 100644 --- a/src/content/docs/en/guides/integrations-guide/node.mdx +++ b/src/content/docs/en/guides/integrations-guide/node.mdx @@ -172,7 +172,7 @@ For standalone mode the server handles file servering in addition to the page an You can override the host and port the standalone server runs on by passing them as environment variables at runtime: ```shell -HOST=0.0.0.0 PORT=3000 node ./dist/server/entry.mjs +HOST=0.0.0.0 PORT=4321 node ./dist/server/entry.mjs ``` #### HTTPS diff --git a/src/content/docs/en/guides/integrations-guide/preact.mdx b/src/content/docs/en/guides/integrations-guide/preact.mdx index 4aa862623bcf9..3d02d9e0f22cf 100644 --- a/src/content/docs/en/guides/integrations-guide/preact.mdx +++ b/src/content/docs/en/guides/integrations-guide/preact.mdx @@ -128,6 +128,41 @@ Check out the [`pnpm` overrides](https://pnpm.io/package_json#pnpmoverrides) and Currently, the `compat` option only works for React libraries that export code as ESM. If an error happens during build-time, try adding the library to `vite.ssr.noExternal: ['the-react-library']` in your `astro.config.mjs` file. ::: +## Options + +### Combining multiple JSX frameworks + +When you are using multiple JSX frameworks (React, Preact, Solid) in the same project, Astro needs to determine which JSX framework-specific transformations should be used for each of your components. If you have only added one JSX framework integration to your project, no extra configuration is needed. + +Use the `include` (required) and `exclude` (optional) configuration options to specify which files belong to which framework. Provide an array of files and/or folders to `include` for each framework you are using. Wildcards may be used to include multiple file paths. + +We recommend placing common framework components in the same folder (e.g. `/components/react/` and `/components/solid/`) to make specifying your includes easier, but this is not required: + +```js +import { defineConfig } from 'astro/config'; +import preact from '@astrojs/preact'; +import react from '@astrojs/react'; +import svelte from '@astrojs/svelte'; +import vue from '@astrojs/vue'; +import solid from '@astrojs/solid-js'; + +export default defineConfig({ + // Enable many frameworks to support all different kinds of components. + // No `include` is needed if you are only using a single JSX framework! + integrations: [ + preact({ + include: ['**/preact/*'], + }), + react({ + include: ['**/react/*'], + }), + solid({ + include: ['**/solid/*'], + }), + ], +}); +``` + ## Examples * The [Astro Preact example](https://github.com/withastro/astro/tree/latest/examples/framework-preact) shows how to use an interactive Preact component in an Astro project. diff --git a/src/content/docs/en/guides/integrations-guide/react.mdx b/src/content/docs/en/guides/integrations-guide/react.mdx index 0fdf9257fbcfe..11f07bb6446fc 100644 --- a/src/content/docs/en/guides/integrations-guide/react.mdx +++ b/src/content/docs/en/guides/integrations-guide/react.mdx @@ -84,6 +84,39 @@ To use your first React component in Astro, head to our [UI framework documentat ## Options +### Combining multiple JSX frameworks + +When you are using multiple JSX frameworks (React, Preact, Solid) in the same project, Astro needs to determine which JSX framework-specific transformations should be used for each of your components. If you have only added one JSX framework integration to your project, no extra configuration is needed. + +Use the `include` (required) and `exclude` (optional) configuration options to specify which files belong to which framework. Provide an array of files and/or folders to `include` for each framework you are using. Wildcards may be used to include multiple file paths. + +We recommend placing common framework components in the same folder (e.g. `/components/react/` and `/components/solid/`) to make specifying your includes easier, but this is not required: + +```js +import { defineConfig } from 'astro/config'; +import preact from '@astrojs/preact'; +import react from '@astrojs/react'; +import svelte from '@astrojs/svelte'; +import vue from '@astrojs/vue'; +import solid from '@astrojs/solid-js'; + +export default defineConfig({ + // Enable many frameworks to support all different kinds of components. + // No `include` is needed if you are only using a single JSX framework! + integrations: [ + preact({ + include: ['**/preact/*'], + }), + react({ + include: ['**/react/*'], + }), + solid({ + include: ['**/solid/*'], + }), + ], +}); +``` + ### Children parsing Children passed into a React component from an Astro component are parsed as plain strings, not React nodes. diff --git a/src/content/docs/en/guides/integrations-guide/solid-js.mdx b/src/content/docs/en/guides/integrations-guide/solid-js.mdx index 68c766632aea8..b4d9baf047a2a 100644 --- a/src/content/docs/en/guides/integrations-guide/solid-js.mdx +++ b/src/content/docs/en/guides/integrations-guide/solid-js.mdx @@ -82,6 +82,41 @@ To use your first SolidJS component in Astro, head to our [UI framework document * 💧 client-side hydration options, and * 🤝 opportunities to mix and nest frameworks together +## Options + +### Combining multiple JSX frameworks + +When you are using multiple JSX frameworks (React, Preact, Solid) in the same project, Astro needs to determine which JSX framework-specific transformations should be used for each of your components. If you have only added one JSX framework integration to your project, no extra configuration is needed. + +Use the `include` (required) and `exclude` (optional) configuration options to specify which files belong to which framework. Provide an array of files and/or folders to `include` for each framework you are using. Wildcards may be used to include multiple file paths. + +We recommend placing common framework components in the same folder (e.g. `/components/react/` and `/components/solid/`) to make specifying your includes easier, but this is not required: + +```js +import { defineConfig } from 'astro/config'; +import preact from '@astrojs/preact'; +import react from '@astrojs/react'; +import svelte from '@astrojs/svelte'; +import vue from '@astrojs/vue'; +import solid from '@astrojs/solid-js'; + +export default defineConfig({ + // Enable many frameworks to support all different kinds of components. + // No `include` is needed if you are only using a single JSX framework! + integrations: [ + preact({ + include: ['**/preact/*'], + }), + react({ + include: ['**/react/*'], + }), + solid({ + include: ['**/solid/*'], + }), + ], +}); +``` + ## Troubleshooting For help, check out the `#support` channel on [Discord](https://astro.build/chat). Our friendly Support Squad members are here to help! diff --git a/src/content/docs/en/guides/integrations-guide/vercel.mdx b/src/content/docs/en/guides/integrations-guide/vercel.mdx index c4757bc288efc..0a198045c8634 100644 --- a/src/content/docs/en/guides/integrations-guide/vercel.mdx +++ b/src/content/docs/en/guides/integrations-guide/vercel.mdx @@ -71,18 +71,12 @@ If you prefer to install the adapter manually instead, complete the following tw You can deploy to different targets: -* `edge`: SSR inside an [Edge function](https://vercel.com/docs/concepts/functions/edge-functions). * `serverless`: SSR inside a [Node.js function](https://vercel.com/docs/concepts/functions/serverless-functions). * `static`: generates a static website following Vercel's output formats, redirects, etc. -:::note -deploying to the Edge has [its limitations](https://vercel.com/docs/concepts/functions/edge-functions#known-limitations). An edge function can't be more than 1 MB in size and they don't support native Node.js APIs, among others. -::: - You can change where to target by changing the import: ```js -import vercel from '@astrojs/vercel/edge'; import vercel from '@astrojs/vercel/serverless'; import vercel from '@astrojs/vercel/static'; ``` @@ -105,7 +99,7 @@ To configure this adapter, pass an object to the `vercel()` function call in `as ### analytics **Type:** `boolean`
-**Available for:** Serverless, Edge, Static
+**Available for:** Serverless, Static
**Added in:** `@astrojs/vercel@3.1.0` You can enable [Vercel Analytics](https://vercel.com/analytics) (including Web Vitals and Audiences) by setting `analytics: true`. This will inject Vercel’s tracking scripts into all your pages. @@ -126,7 +120,7 @@ export default defineConfig({ ### imagesConfig **Type:** `VercelImageConfig`
-**Available for:** Edge, Serverless, Static +**Available for:** Serverless, Static **Added in:** `@astrojs/vercel@3.3.0` Configuration options for [Vercel's Image Optimization API](https://vercel.com/docs/concepts/image-optimization). See [Vercel's image configuration documentation](https://vercel.com/docs/build-output-api/v3/configuration#images) for a complete list of supported parameters. @@ -149,7 +143,7 @@ export default defineConfig({ ### imageService **Type:** `boolean`
-**Available for:** Edge, Serverless, Static +**Available for:** Serverless, Static **Added in:** `@astrojs/vercel@3.3.0` When enabled, an [Image Service](/en/reference/image-service-reference/) powered by the Vercel Image Optimization API will be automatically configured and used in production. In development, a built-in Squoosh-based service will be used instead. @@ -190,7 +184,7 @@ import astroLogo from '../assets/logo.png'; ### includeFiles **Type:** `string[]`
-**Available for:** Edge, Serverless +**Available for:** Serverless Use this property to force files to be bundled with your function. This is helpful when you notice missing files. @@ -207,10 +201,6 @@ export default defineConfig({ }); ``` -:::note -When building for the Edge, all the dependencies get bundled in a single file to save space. **No extra file will be bundled**. So, if you *need* some file inside the function, you have to specify it in `includeFiles`. -::: - ### excludeFiles **Type:** `string[]`
@@ -242,10 +232,9 @@ import vercel from '@astrojs/vercel/serverless'; export default defineConfig({ output: 'server', - adapter: vercel(), - build: { - split: true, - }, + adapter: vercel({ + functionPerRoute: true, + }), }); ``` @@ -284,7 +273,7 @@ You can use Vercel Edge middleware to intercept a request and redirect before se The `@astrojs/vercel/serverless` adapter can automatically create the Vercel Edge middleware from an Astro middleware in your code base. -This is an opt-in feature, and the `build.excludeMiddleware` option needs to be set to `true`: +This is an opt-in feature, and the `edgeMiddleware` option needs to be set to `true`: ```js // astro.config.mjs @@ -292,10 +281,9 @@ import { defineConfig } from 'astro/config'; import vercel from '@astrojs/vercel'; export default defineConfig({ output: 'server', - adapter: vercel(), - build: { - excludeMiddleware: true, - }, + adapter: vercel({ + edgeMiddleware: true, + }), }); ``` diff --git a/src/content/docs/en/reference/configuration-reference.mdx b/src/content/docs/en/reference/configuration-reference.mdx index 3fffc314686fe..acc60bf975943 100644 --- a/src/content/docs/en/reference/configuration-reference.mdx +++ b/src/content/docs/en/reference/configuration-reference.mdx @@ -197,15 +197,15 @@ Your final, deployed URL. Astro uses this full URL to generate your sitemap and

**Type:** `boolean`
-**Default:** `false` +**Default:** `true`

-This is an option to minify your HTML output and reduce the size of your HTML files. When enabled, Astro removes all whitespace from your HTML, including line breaks, from `.astro` components. This occurs both in development mode and in the final build. -To enable this, set the `compressHTML` flag to `true`. +This is an option to minify your HTML output and reduce the size of your HTML files. By default, Astro removes all whitespace from your HTML, including line breaks, from `.astro` components. This occurs both in development mode and in the final build. +To disable HTML compression, set the `compressHTML` flag to `false`. ```js { - compressHTML: true + compressHTML: false } ``` @@ -229,12 +229,7 @@ In the example below, `astro dev` will start your server at `/docs`. When using this option, all of your static asset imports and URLs should add the base as a prefix. You can access this value via `import.meta.env.BASE_URL`. -By default, the value of `import.meta.env.BASE_URL` includes a trailing slash. If you have the [`trailingSlash`](/en/reference/configuration-reference/#trailingslash) option set to `'never'`, you will need to add it manually in your static asset imports and URLs. - -```astro -About - -``` +The value of `import.meta.env.BASE_URL` respects your `trailingSlash` config and will include a trailing slash if you explicitly include one or if `trailingSlash: "always"` is set. If `trailingSlash: "never"` is set, `BASE_URL` will not include a trailing slash, even if `base` includes one. ### trailingSlash @@ -268,17 +263,19 @@ You can also set this if you prefer to be more strict yourself, so that URLs wit

-**Type:** `'where' | 'class'`
-**Default:** `'where'`
+**Type:** `'where' | 'class' | 'attribute'`
+**Default:** `'attribute'`

Specify the strategy used for scoping styles within Astro components. Choose from: - - `'where'` - Use `:where` selectors, causing no specifity increase. - - `'class'` - Use class-based selectors, causing a +1 specifity increase. + - `'where'` - Use `:where` selectors, causing no specifity increase. + - `'class'` - Use class-based selectors, causing a +1 specifity increase. + - `'attribute'` - Use `data-` attributes, causing no specifity increase. Using `'class'` is helpful when you want to ensure that element selectors within an Astro component override global style defaults (e.g. from a global stylesheet). Using `'where'` gives you more control over specifity, but requires that you use higher-specifity selectors, layers, and other tools to control which selectors are applied. +Using 'attribute' is useful when you are manipulating the `class` attribute of elements and need to avoid conflicts between your own styling logic and Astro's application of styles. ### adapter @@ -508,7 +505,7 @@ configuration files for redirects and do not need/want HTML based redirects.

**Type:** `'always' | 'auto' | 'never'`
-**Default:** `never`
+**Default:** `auto`

@@ -520,7 +517,7 @@ Control whether project styles are sent to the browser in a separate css file or ```js { build: { - inlineStylesheets: `auto`, + inlineStylesheets: `never`, }, } ``` @@ -531,24 +528,12 @@ Control whether project styles are sent to the browser in a separate css file or

**Type:** `boolean`
-**Default:** `false`
- +**Default:** `false`

-Defines how the SSR code should be bundled when built. +The build config option `build.split` has been replaced by the adapter configuration option [`functionPerRoute`](/en/reference/adapter-reference/#functionperroute). -When `split` is `true`, Astro will emit a file for each page. -Each file emitted will render only one page. The pages will be emitted -inside a `dist/pages/` directory, and the emitted files will keep the same file paths -of the `src/pages` directory. - -```js -{ - build: { - split: true - } -} -``` +Please see your [SSR adapter's documentation](/en/guides/integrations-guide/#official-integrations) for using `functionPerRoute` to define how your SSR code is bundled. ### build.excludeMiddleware @@ -556,21 +541,12 @@ of the `src/pages` directory.

**Type:** `boolean`
-**Default:** `false`
- +**Default:** `false`

-Defines whether or not any SSR middleware code will be bundled when built. +The build config option `build.excludeMiddleware` has been replaced by the adapter configuration option [`edgeMiddleware`](/en/reference/adapter-reference/#edgemiddleware). -When enabled, middleware code is not bundled and imported by all pages during the build. To instead execute and import middleware code manually, set `build.excludeMiddleware: true`: - -```js -{ - build: { - excludeMiddleware: true - } -} -``` +Please see your [SSR adapter's documentation](/en/guides/integrations-guide/#official-integrations) for using `edgeMiddleware` to define whether or not any SSR middleware code will be bundled when built. ## Server Options @@ -588,7 +564,7 @@ To set different configuration based on the command run ("dev", "preview") a fun ```js { // Example: Use the function syntax to customize based on command - server: ({ command }) => ({ port: command === 'dev' ? 3000 : 4000 }) + server: ({ command }) => ({ port: command === 'dev' ? 4321 : 4000 }) } ``` @@ -612,7 +588,7 @@ Set which network IP addresses the server should listen on (i.e. non-localhost I

**Type:** `number`
-**Default:** `3000` +**Default:** `4321`

Set which port the server should listen on. @@ -645,7 +621,7 @@ Set custom HTTP response headers to be sent in `astro dev` and `astro preview`.

**Type:** `Object`
-**Default:** `{entrypoint: 'astro/assets/services/squoosh', config?: {}}`
+**Default:** `{entrypoint: 'astro/assets/services/sharp', config?: {}}`

@@ -884,7 +860,7 @@ Pass options to [remark-rehype](https://github.com/remarkjs/remark-rehype#api). ## Integrations -Extend Astro with custom integrations. Integrations are your one-stop-shop for adding framework support (like Solid.js), new features (like sitemaps), and new libraries (like Partytown and Turbolinks). +Extend Astro with custom integrations. Integrations are your one-stop-shop for adding framework support (like Solid.js), new features (like sitemaps), and new libraries (like Partytown). Read our [Integrations Guide](/en/guides/integrations-guide/) for help getting started with Astro Integrations. @@ -936,28 +912,6 @@ in the latest version, so that you can continue to upgrade and take advantage of Astro offers experimental flags to give users early access to new features. These flags are not guaranteed to be stable. -### experimental.assets - -

- -**Type:** `boolean`
-**Default:** `false`
- -

- -Enable experimental support for optimizing and resizing images. With this enabled, a new `astro:assets` module will be exposed. - -To enable this feature, set `experimental.assets` to `true` in your Astro config: - -```js -{ - experimental: { - assets: true, - }, -} -``` - - ### experimental.viewTransitions

diff --git a/src/content/docs/en/reference/error-reference.mdx b/src/content/docs/en/reference/error-reference.mdx index 029f00b2346f2..02b2b1e9124f6 100644 --- a/src/content/docs/en/reference/error-reference.mdx +++ b/src/content/docs/en/reference/error-reference.mdx @@ -57,6 +57,7 @@ The following reference is a complete list of the errors you may encounter while - [**AstroGlobNoMatch**](/en/reference/errors/astro-glob-no-match/)
Astro.glob() did not match any files. - [**RedirectWithNoLocation**](/en/reference/errors/redirect-with-no-location/)
A redirect must be given a location with the `Location` header. - [**InvalidDynamicRoute**](/en/reference/errors/invalid-dynamic-route/)
Invalid dynamic route. +- [**MissingSharp**](/en/reference/errors/missing-sharp/)
Could not find Sharp. - [**UnknownViteError**](/en/reference/errors/unknown-vite-error/)
Unknown Vite Error. - [**FailedToLoadModuleSSR**](/en/reference/errors/failed-to-load-module-ssr/)
Could not import file. - [**InvalidGlob**](/en/reference/errors/invalid-glob/)
Invalid glob pattern. diff --git a/src/content/docs/en/reference/errors/expected-image-options.mdx b/src/content/docs/en/reference/errors/expected-image-options.mdx index 10557b0aac826..adf440185d160 100644 --- a/src/content/docs/en/reference/errors/expected-image-options.mdx +++ b/src/content/docs/en/reference/errors/expected-image-options.mdx @@ -28,6 +28,6 @@ const optimizedImage = await getImage({src: myImage, width: 300, height: 300}); In most cases, this error happens because parameters were passed directly instead of inside an object. **See Also:** -- [Assets (Experimental)](/en/guides/assets/) +- [Images](/en/guides/images/) diff --git a/src/content/docs/en/reference/errors/expected-image.mdx b/src/content/docs/en/reference/errors/expected-image.mdx index 6060dae8ce657..bd8e779190a6c 100644 --- a/src/content/docs/en/reference/errors/expected-image.mdx +++ b/src/content/docs/en/reference/errors/expected-image.mdx @@ -31,6 +31,6 @@ import myImage from "../assets/my_image.png"; In most cases, this error happens when the value passed to `src` is undefined. **See Also:** -- [Assets (Experimental)](/en/guides/assets/) +- [Images](/en/guides/images/) diff --git a/src/content/docs/en/reference/errors/image-missing-alt.mdx b/src/content/docs/en/reference/errors/image-missing-alt.mdx index 2ea961340f5f2..3d01cd92a9979 100644 --- a/src/content/docs/en/reference/errors/image-missing-alt.mdx +++ b/src/content/docs/en/reference/errors/image-missing-alt.mdx @@ -21,8 +21,8 @@ The `alt` property allows you to provide descriptive alt text to users of screen If the image is merely decorative (i.e. doesn’t contribute to the understanding of the page), set `alt=""` so that screen readers know to ignore the image. **See Also:** -- [Assets (Experimental)](/en/guides/assets/) -- [Image component](/en/guides/assets/#image--astroassets) --  [Image component#alt](/en/guides/assets/#alt-required) +- [Images](/en/guides/images/) +- [Image component](/en/guides/images/#image--astroassets) +-  [Image component#alt](/en/guides/images/#alt-required) diff --git a/src/content/docs/en/reference/errors/local-image-used-wrongly.mdx b/src/content/docs/en/reference/errors/local-image-used-wrongly.mdx index 1f697ac9ec76a..99574a8cc1ff2 100644 --- a/src/content/docs/en/reference/errors/local-image-used-wrongly.mdx +++ b/src/content/docs/en/reference/errors/local-image-used-wrongly.mdx @@ -32,6 +32,6 @@ import myImage from "../my_image.png"; ``` **See Also:** -- [Assets (Experimental)](/en/guides/assets/) +- [Images](/en/guides/images/) diff --git a/src/content/docs/en/reference/errors/locals-not-an-object.mdx b/src/content/docs/en/reference/errors/locals-not-an-object.mdx index d503a11695d32..c4ca3a1992415 100644 --- a/src/content/docs/en/reference/errors/locals-not-an-object.mdx +++ b/src/content/docs/en/reference/errors/locals-not-an-object.mdx @@ -20,7 +20,7 @@ Thrown in development mode when `locals` is overwritten with something that is n For example: ```ts -import {defineMiddleware} from "astro/middleware"; +import {defineMiddleware} from "astro:middleware"; export const onRequest = defineMiddleware((context, next) => { context.locals = 1541; return next(); diff --git a/src/content/docs/en/reference/errors/markdown-image-not-found.mdx b/src/content/docs/en/reference/errors/markdown-image-not-found.mdx index 1450d5cd79023..6feeea6e2f75d 100644 --- a/src/content/docs/en/reference/errors/markdown-image-not-found.mdx +++ b/src/content/docs/en/reference/errors/markdown-image-not-found.mdx @@ -21,6 +21,6 @@ Astro could not find an image you included in your Markdown content. Usually, th Images in Markdown are relative to the current file. To refer to an image that is located in the same folder as the `.md` file, the path should start with `./` **See Also:** -- [Assets (Experimental)](/en/guides/assets/) +- [Images](/en/guides/images/) diff --git a/src/content/docs/en/reference/errors/middleware-no-data-or-next-called.mdx b/src/content/docs/en/reference/errors/middleware-no-data-or-next-called.mdx index ba8e6ab5d6f9c..a469882ba3d49 100644 --- a/src/content/docs/en/reference/errors/middleware-no-data-or-next-called.mdx +++ b/src/content/docs/en/reference/errors/middleware-no-data-or-next-called.mdx @@ -20,7 +20,7 @@ Thrown when the middleware does not return any data or call the `next` function. For example: ```ts -import {defineMiddleware} from "astro/middleware"; +import {defineMiddleware} from "astro:middleware"; export const onRequest = defineMiddleware((context, _) => { // doesn't return anything or call `next` context.locals.someData = false; diff --git a/src/content/docs/en/reference/errors/middleware-not-aresponse.mdx b/src/content/docs/en/reference/errors/middleware-not-aresponse.mdx index 92d6caac3f08f..a3a19a357841d 100644 --- a/src/content/docs/en/reference/errors/middleware-not-aresponse.mdx +++ b/src/content/docs/en/reference/errors/middleware-not-aresponse.mdx @@ -20,7 +20,7 @@ Thrown in development mode when middleware returns something that is not a `Resp For example: ```ts -import {defineMiddleware} from "astro/middleware"; +import {defineMiddleware} from "astro:middleware"; export const onRequest = defineMiddleware(() => { return "string" }); diff --git a/src/content/docs/en/reference/errors/missing-image-dimension.mdx b/src/content/docs/en/reference/errors/missing-image-dimension.mdx index f960c46d62260..82ef85cdfa59c 100644 --- a/src/content/docs/en/reference/errors/missing-image-dimension.mdx +++ b/src/content/docs/en/reference/errors/missing-image-dimension.mdx @@ -21,7 +21,7 @@ For remote images, `width` and `height` cannot be inferred from the original fil If your image is inside your `src` folder, you probably meant to import it instead. See [the Imports guide for more information](/en/guides/imports/#other-assets). **See Also:** -- [Assets (Experimental)](/en/guides/assets/) -- [Image component#width-and-height](/en/guides/assets/#width-and-height) +- [Images](/en/guides/images/) +- [Image component#width-and-height-required](/en/guides/images/#width-and-height-required-for-public-and-remote-images) diff --git a/src/content/docs/en/reference/errors/missing-sharp.mdx b/src/content/docs/en/reference/errors/missing-sharp.mdx new file mode 100644 index 0000000000000..b4f82b5fd16e6 --- /dev/null +++ b/src/content/docs/en/reference/errors/missing-sharp.mdx @@ -0,0 +1,37 @@ +--- +# NOTE: This file is auto-generated from 'scripts/error-docgen.mjs' +# Do not make edits to it directly, they will be overwritten. +# Instead, change this file: https://github.com/withastro/astro/blob/main/packages/astro/src/core/errors/errors-data.ts +# Translators, please remove this note and the component. + +title: Could not find Sharp. +i18nReady: true +githubURL: https://github.com/withastro/astro/blob/main/packages/astro/src/core/errors/errors-data.ts +--- +import DontEditWarning from '~/components/DontEditWarning.astro' + + + + +> **MissingSharp**: Could not find Sharp. Please install Sharp (`sharp`) manually into your project. + +## What went wrong? +Sharp is the default image service used for `astro:assets`. When using a [strict package manager](https://pnpm.io/pnpm-vs-npm#npms-flat-tree) like pnpm, Sharp must be installed manually into your project in order to use image processing. + +If you are not using `astro:assets` for image processing, and do not wish to install Sharp, you can configure the following passthrough image service that does no processing: + +```js +import { defineConfig, passthroughImageService } from "astro/config"; +export default defineConfig({ + image: { + service: passthroughImageService(), + }, +}); +``` + +**See Also:** +- [Default Image Service](/en/guides/images/#default-image-service) +- [Image Component](/en/guides/images/#image--astroassets) +- [Image Services API](/en/reference/image-service-reference/) + + diff --git a/src/content/docs/en/reference/errors/static-redirect-not-available.mdx b/src/content/docs/en/reference/errors/static-redirect-not-available.mdx index b30085753a7aa..33cea00ba861d 100644 --- a/src/content/docs/en/reference/errors/static-redirect-not-available.mdx +++ b/src/content/docs/en/reference/errors/static-redirect-not-available.mdx @@ -14,7 +14,7 @@ import DontEditWarning from '~/components/DontEditWarning.astro' :::caution[Deprecated] -since version 2.6 +Deprecated since version 2.6. ::: > **StaticRedirectNotAvailable**: Redirects are only available when using `output: 'server'` or `output: 'hybrid'`. Update your Astro config if you need SSR features. diff --git a/src/content/docs/en/reference/errors/unsupported-image-format.mdx b/src/content/docs/en/reference/errors/unsupported-image-format.mdx index 0d32e659dedfb..3c9632ef66bed 100644 --- a/src/content/docs/en/reference/errors/unsupported-image-format.mdx +++ b/src/content/docs/en/reference/errors/unsupported-image-format.mdx @@ -18,10 +18,10 @@ import DontEditWarning from '~/components/DontEditWarning.astro' ## What went wrong? The built-in image services do not currently support optimizing all image formats. -For unsupported formats such as SVGs and GIFs, you may be able to use an `img` tag directly: +For unsupported formats such as GIFs, you may be able to use an `img` tag directly: ```astro --- -import rocket from '../assets/images/rocket.svg'; +import rocket from '../assets/images/rocket.gif'; --- A rocketship in space.