All checks were successful
Deploy info-canicule / deploy (push) Successful in 1m28s
- /conseils : cards par phénomène (couleur d'impact + glyphe), bloc registre canicule mis en avant, numéros d'urgence - /conseils/[slug] : nouvelle route SSR par phénomène — kit imprimable, share natif, cross-link, advice.ts réutilisé - /conseils/registre-canicule : reskin nouveau design, contenu existant conservé + TL;DR coloré - /a-propos : reskin + sections "engagement accessibilité" et "à venir" - /mentions-legales : reskin en cards (contenu inchangé) - Sitemap : custom serialize avec priority/changefreq par type d'URL, customPages pour les 102 départements + 7 kits (117 URLs au total). Suppression du custom sitemap-departements.xml redondant Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
73 lines
2.8 KiB
JavaScript
73 lines
2.8 KiB
JavaScript
import { defineConfig } from 'astro/config';
|
|
import node from '@astrojs/node';
|
|
import tailwind from '@astrojs/tailwind';
|
|
import sitemap from '@astrojs/sitemap';
|
|
import sentry from '@sentry/astro';
|
|
import { DEPARTEMENTS } from './src/lib/departements.ts';
|
|
import { PHENOMENA } from './src/lib/phenomena.ts';
|
|
|
|
const sentryDsn = process.env.SENTRY_DSN;
|
|
const release = process.env.GIT_COMMIT_SHA || 'dev';
|
|
const SITE = 'https://info-canicule.nocleus.com';
|
|
|
|
// URLs dynamiques (SSR) listées explicitement pour le sitemap — sinon @astrojs/sitemap
|
|
// ne les voit pas (il n'énumère que les routes statiques au build).
|
|
const deptUrls = DEPARTEMENTS.map((d) => `${SITE}/departement/${d.code}`);
|
|
const kitUrls = Object.values(PHENOMENA).map((p) => `${SITE}/conseils/${p.slug}`);
|
|
|
|
export default defineConfig({
|
|
output: 'server',
|
|
adapter: node({ mode: 'standalone' }),
|
|
integrations: [
|
|
tailwind({ applyBaseStyles: false }),
|
|
sitemap({
|
|
filter: (page) => !page.includes('/api/'),
|
|
customPages: [...deptUrls, ...kitUrls],
|
|
// Priorités SEO selon le type d'URL.
|
|
// Home > carte dept > conseils par phénomène > conseils index > pages info.
|
|
serialize(item) {
|
|
const url = item.url;
|
|
// Home — priorité max, change toutes les ~15 min côté contenu mais l'URL ne bouge pas.
|
|
if (url === `${SITE}/` || url === SITE) {
|
|
return { ...item, priority: 1.0, changefreq: 'hourly' };
|
|
}
|
|
// Pages département (96) — coeur du SEO long-tail, contenu live.
|
|
if (url.includes('/departement/')) {
|
|
return { ...item, priority: 0.9, changefreq: 'hourly' };
|
|
}
|
|
// Kits par phénomène — contenu durable, fort potentiel SEO.
|
|
if (url.includes('/conseils/') && url !== `${SITE}/conseils/` && !url.includes('registre-canicule')) {
|
|
return { ...item, priority: 0.8, changefreq: 'monthly' };
|
|
}
|
|
// Index conseils + registre canicule — repères durables.
|
|
if (url.includes('/conseils')) {
|
|
return { ...item, priority: 0.8, changefreq: 'monthly' };
|
|
}
|
|
// Embed — utile pour intégrations tierces.
|
|
if (url.includes('/embed')) {
|
|
return { ...item, priority: 0.5, changefreq: 'monthly' };
|
|
}
|
|
// Pages info (à-propos, mentions, etc.)
|
|
return { ...item, priority: 0.4, changefreq: 'yearly' };
|
|
},
|
|
}),
|
|
...(sentryDsn
|
|
? [
|
|
sentry({
|
|
dsn: sentryDsn,
|
|
environment: process.env.NODE_ENV ?? 'production',
|
|
release,
|
|
tracesSampleRate: 0.1,
|
|
sourceMapsUploadOptions: { enabled: false },
|
|
}),
|
|
]
|
|
: []),
|
|
],
|
|
server: { host: '0.0.0.0', port: 4321 },
|
|
site: SITE,
|
|
vite: {
|
|
ssr: {
|
|
noExternal: ['ioredis'],
|
|
},
|
|
},
|
|
});
|