Deux serveurs de prévisualisation à la fois
Astro 7.1 avait introduit un fichier de verrou pour empêcher le démarrage de
plusieurs serveurs astro dev — la mesure visait les agents d'IA qui en lancent
des copies sans le savoir — avec --ignore-lock comme échappatoire. Astro 7.2 a
étendu le verrou à astro preview, sans reprendre le drapeau. Résultat :
plus moyen de faire tourner deux prévisualisations en parallèle, ce qui gêne
précisément au moment des tests Playwright.
astro preview --ignore-lockCes instances tournent indépendamment : elles sont prévues pour des serveurs
jetables, pas pour être pilotées ensuite par astro preview stop ou status.
Le logger atteint enfin les extensions
Un service d'images personnalisé ou un cache provider n'avait que
console.warn() pour signaler un format non géré ou une entrée ignorée. Cet
appel court-circuite votre niveau de journalisation, votre destination, et même
le drapeau --silent. Astro 7.3 passe son logger aux deux points d'extension.
Pour un service d'images, en quatrième argument du hook transform() :
import type { LocalImageService } from 'astro';
const service: LocalImageService = {
async transform(inputBuffer, transform, imageConfig, logger) {
logger.warn(`Could not optimize "${transform.src}". Passing it through unchanged.`);
return { data: inputBuffer, format: 'png' };
},
};Pour un fournisseur de cache, sur le contexte de onRequest() :
import type { CacheProvider } from 'astro';
const provider: CacheProvider = {
name: 'my-cache',
async onRequest({ request, url, logger }, next) {
logger.warn(`Skipping cache for ${url.pathname} because the response sets a cookie.`);
return next();
},
};Le service Sharp intégré et le fournisseur memoryCache() d'Astro ont été
adaptés : leurs avertissements se comportent désormais comme le reste de la
sortie.
finalize() côté Cloudflare
Si vous avez un point d'entrée worker maison, @astrojs/cloudflare expose une
fonction finalize() qui applique les cookies et les réglages de cache CDN à la
réponse sortant d'un pipeline astro/fetch :
import { astro, FetchState } from 'astro/fetch';
import { cf, finalize } from '@astrojs/cloudflare/fetch';
export default {
async fetch(request: Request, env: Env, context: ExecutionContext) {
const state = new FetchState(request);
const asset = await cf(state, env, context);
if (asset) return asset;
return finalize(state, await astro(state));
},
};Avec Hono, le middleware @astrojs/cloudflare/hono applique déjà ces en-têtes :
rien à appeler.
À retenir
astro preview --ignore-lockdébloque les suites de tests qui lancent plusieurs prévisualisations.- Vos extensions doivent maintenant utiliser le
loggerreçu, pasconsole.warn: c'est la seule façon de respecter--silentet la destination configurée. - Montée de version :
npx @astrojs/upgrade, ounpm install astro@latest.
Source : Astro