diff --git a/.changeset/four-houses-compete.md b/.changeset/four-houses-compete.md new file mode 100644 index 000000000000..641bb10353dd --- /dev/null +++ b/.changeset/four-houses-compete.md @@ -0,0 +1,18 @@ +--- +'astro': major +--- + +Sharp is now the default image service used for `astro:assets`. If you would prefer to still use Squoosh, you can update your config with the following: + +```ts +import { defineConfig, squooshImageService } from "astro/config"; + +// https://astro.build/config +export default defineConfig({ + image: { + service: squooshImageService(), + } +}) +``` + +However, not only do we recommend using Sharp as it is faster and more reliable, it is also highly likely that the Squoosh service will be removed in a future release. diff --git a/packages/astro/package.json b/packages/astro/package.json index a3a1d68c7db2..32e0160734da 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -153,6 +153,7 @@ "mime": "^3.0.0", "network-information-types": "^0.1.1", "ora": "^6.3.1", + "sharp": "^0.32.1", "p-limit": "^4.0.0", "path-to-regexp": "^6.2.1", "preferred-pm": "^3.0.3", @@ -209,19 +210,10 @@ "remark-code-titles": "^0.1.2", "rollup": "^3.25.1", "sass": "^1.63.4", - "sharp": "^0.32.1", "srcset-parse": "^1.1.0", "undici": "^5.22.1", "unified": "^10.1.2" }, - "peerDependencies": { - "sharp": ">=0.31.0" - }, - "peerDependenciesMeta": { - "sharp": { - "optional": true - } - }, "engines": { "node": ">=18.14.1", "npm": ">=6.14.0" diff --git a/packages/astro/src/@types/astro.ts b/packages/astro/src/@types/astro.ts index 1e5863d123ea..4c51a7eaf663 100644 --- a/packages/astro/src/@types/astro.ts +++ b/packages/astro/src/@types/astro.ts @@ -20,9 +20,9 @@ import type { AstroConfigSchema } from '../core/config'; import type { AstroTimer } from '../core/config/timer'; import type { AstroCookies } from '../core/cookies'; import type { LogOptions, LoggerLevel } from '../core/logger/core'; +import { AstroIntegrationLogger } from '../core/logger/core'; import type { AstroComponentFactory, AstroComponentInstance } from '../runtime/server'; import type { SUPPORTED_MARKDOWN_FILE_EXTENSIONS } from './../core/constants.js'; -import { AstroIntegrationLogger } from '../core/logger/core'; export type { MarkdownHeading, MarkdownMetadata, @@ -987,7 +987,7 @@ export interface AstroUserConfig { * @docs * @name image.service (Experimental) * @type {{entrypoint: 'astro/assets/services/sharp' | 'astro/assets/services/squoosh' | string, config: Record}} - * @default `{entrypoint: 'astro/assets/services/squoosh', config?: {}}` + * @default `{entrypoint: 'astro/assets/services/sharp', config?: {}}` * @version 2.1.0 * @description * Set which image service is used for Astro’s experimental assets support. diff --git a/packages/astro/src/core/config/schema.ts b/packages/astro/src/core/config/schema.ts index c40953187fb0..64cb4d16ae75 100644 --- a/packages/astro/src/core/config/schema.ts +++ b/packages/astro/src/core/config/schema.ts @@ -191,7 +191,7 @@ export const AstroConfigSchema = z.object({ }), }) .default({ - service: { entrypoint: 'astro/assets/services/squoosh', config: {} }, + service: { entrypoint: 'astro/assets/services/sharp', config: {} }, }), markdown: z .object({