feat(content): refonte conseils (kits par phénomène), à-propos, mentions, sitemap
All checks were successful
Deploy info-canicule / deploy (push) Successful in 1m28s
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>
This commit is contained in:
parent
72b3785499
commit
0723ee10e3
7 changed files with 719 additions and 359 deletions
|
|
@ -3,9 +3,17 @@ 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',
|
||||
|
|
@ -13,12 +21,36 @@ export default defineConfig({
|
|||
integrations: [
|
||||
tailwind({ applyBaseStyles: false }),
|
||||
sitemap({
|
||||
filter: (page) =>
|
||||
!page.includes('/api/') &&
|
||||
!page.includes('/departement/'),
|
||||
// /departement/* est dynamique pour les 96 dépts — généré dans /sitemap-departements.xml.ts à part.
|
||||
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' };
|
||||
},
|
||||
}),
|
||||
// Sentry / GlitchTip — opt-in via env. Si SENTRY_DSN absent, intégration omise (no-op).
|
||||
...(sentryDsn
|
||||
? [
|
||||
sentry({
|
||||
|
|
@ -26,14 +58,13 @@ export default defineConfig({
|
|||
environment: process.env.NODE_ENV ?? 'production',
|
||||
release,
|
||||
tracesSampleRate: 0.1,
|
||||
// GlitchTip est OK avec source maps mais on les omet pour éviter le upload.
|
||||
sourceMapsUploadOptions: { enabled: false },
|
||||
}),
|
||||
]
|
||||
: []),
|
||||
],
|
||||
server: { host: '0.0.0.0', port: 4321 },
|
||||
site: 'https://info-canicule.nocleus.com',
|
||||
site: SITE,
|
||||
vite: {
|
||||
ssr: {
|
||||
noExternal: ['ioredis'],
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue