Personalizar nombres de archivos en la salida del build
Por defecto, el comando astro build saca tus assets compilados desde el código fuente de tu proyecto, como archivos JavaScript y CSS ubicados en el directorio src/, hacia un directorio _astro con nombres de archivo hasheados (ej. _astro/index.DRf8L97S.js) que son excelentes para caché a largo plazo.
Aunque normalmente no es necesario, puedes personalizar los nombres de archivo de salida cuando lo necesites. Por ejemplo, esto puede ser útil si tienes scripts con nombres que podrían activar bloqueadores de anuncios (ej. ads.js), o si quieres organizar tus assets con una convención de nombres particular. Al personalizar las opciones de salida de Rollup, puedes ganar más control sobre la estructura de build de tu proyecto, permitiéndote cumplir con requisitos específicos de organización o despliegue.
Esta receta configura vite.environments.client.build.rollupOptions para sacar los assets compilados con la siguiente estructura y patrón de nombres:
- Archivos de entrada JavaScript (ej. scripts directamente asociados con tus páginas o layouts):
dist/js/[name]-[hash].js - Chunks de code-splitting de JavaScript (ej. componentes importados dinámicamente o módulos compartidos):
dist/js/chunks/[name]-[hash].js - Otros assets (ej. CSS, imágenes, fuentes):
dist/static/[name]-[hash][extname](ej.dist/static/styles-a1b2c3d4.css,dist/static/logo-e5f6g7h8.svg)
-
Añadir opciones de salida de Rollup de Vite.
Modifica tu
astro.config.mjspara incluir la siguiente configuración devite.environments.client.build.rollupOptions.output. Aquí es donde puedes definir los patrones de nombres personalizados para tus assets usandoentryFileNames,chunkFileNames, yassetFileNamesde Rollup:astro.config.mjs import { defineConfig } from 'astro/config';export default defineConfig({// ...vite: {environments: {client: {build: {rollupOptions: {output: {// path names relative to `outDir`entryFileNames: 'js/[name]-[hash].js',chunkFileNames: 'js/chunks/[name]-[hash].js',assetFileNames: 'static/[name]-[hash][extname]',},},},},},},});Este ejemplo usa los siguientes placeholders de nombres de archivo:
[name]: El nombre original del archivo (sin la extensión ni la ruta).[hash]: Un hash basado en el contenido generado para el archivo, crucial para cache busting. También puedes especificar una longitud, ej.[hash:8]. Esto asegura que cuando actualizas un asset, el nombre del archivo cambia, forzando a los navegadores a descargar la nueva versión en lugar de servir una versión cacheada obsoleta.[extname]: La extensión original del archivo, incluyendo el punto inicial (ej..js,.css,.svg).
Para una lista completa de placeholders disponibles y patrones avanzados para estas opciones, consulta la documentación de configuración de Rollup.
-
Compila tu proyecto.
Dado que estas personalizaciones de nombres de archivo aplican solo a la salida del build de producción, necesitarás ejecutar el comando de build de tu proyecto:
Ventana de la terminal npm run buildVentana de la terminal pnpm buildVentana de la terminal yarn build -
Después de que el build se complete, inspecciona tu directorio de salida (
dist/por defecto).Verifica que los assets compilados de tu proyecto
srcestén nombrados y organizados según los nuevos patrones. (Los archivos de tu directoriopublic/se copian directamente al directorio de salida y no se ven afectados por estas opciones de nombres de Rollup.)Dependiendo del contenido específico de tu proyecto, tu carpeta de build ahora se verá algo así:
Directoriodist/
Directoriojs/
- index-a1b2c3d4.js
Directoriochunks/
- common-e5f6g7h8.js
Directorioimg/
- logo-i9j0k1l2.png
Directoriofonts/
- myfont-q2w3e4r5.woff2
Directoriostatic_assets/
- styles-m3n4o5p6.css
- index.html
Directorioabout/
- index.html
- … (otros archivos HTML y assets públicos)