diff --git a/.changeset/tough-sheep-grab.md b/.changeset/tough-sheep-grab.md new file mode 100644 index 000000000000..d4870c980ea8 --- /dev/null +++ b/.changeset/tough-sheep-grab.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fix `env.d.ts` changing types wrongly on every restart when `experimental.assets` is enabled diff --git a/packages/astro/src/vite-plugin-inject-env-ts/index.ts b/packages/astro/src/vite-plugin-inject-env-ts/index.ts index bee2f37cc663..1693917f7e7e 100644 --- a/packages/astro/src/vite-plugin-inject-env-ts/index.ts +++ b/packages/astro/src/vite-plugin-inject-env-ts/index.ts @@ -49,18 +49,25 @@ export async function setUpEnvTs({ if (fs.existsSync(envTsPath)) { let typesEnvContents = await fs.promises.readFile(envTsPath, 'utf-8'); + + // TODO: Remove this logic in 3.0, as `astro/client-image` will be merged into `astro/client` if (settings.config.experimental.assets && typesEnvContents.includes('types="astro/client"')) { typesEnvContents = typesEnvContents.replace( 'types="astro/client"', 'types="astro/client-image"' ); await fs.promises.writeFile(envTsPath, typesEnvContents, 'utf-8'); - } else if (typesEnvContents.includes('types="astro/client-image"')) { + info(logging, 'assets', `Added ${bold(envTsPathRelativetoRoot)} types`); + } else if ( + !settings.config.experimental.assets && + typesEnvContents.includes('types="astro/client-image"') + ) { typesEnvContents = typesEnvContents.replace( 'types="astro/client-image"', 'types="astro/client"' ); await fs.promises.writeFile(envTsPath, typesEnvContents, 'utf-8'); + info(logging, 'assets', `Removed ${bold(envTsPathRelativetoRoot)} types`); } if (!fs.existsSync(dotAstroDir))