|
| 1 | +--- |
| 2 | +title: Personalizar los nombres de los archivos en el resultado de la compilación |
| 3 | +description: Aprende a cambiar el patrón de nomenclatura predeterminado para tus recursos compilados, como JavaScript, CSS e imágenes en Astro mediante las opciones de Rollup de Vite. |
| 4 | +i18nReady: true |
| 5 | +type: recipe |
| 6 | +--- |
| 7 | + |
| 8 | +import { Steps } from '@astrojs/starlight/components'; |
| 9 | +import { FileTree } from '@astrojs/starlight/components'; |
| 10 | +import ReadMore from '~/components/ReadMore.astro'; |
| 11 | +import PackageManagerTabs from '~/components/tabs/PackageManagerTabs.astro'; |
| 12 | + |
| 13 | +Por defecto, el comando `astro build` genera los recursos compilados a partir de [el código fuente de tu proyecto](/es/basics/project-structure/#src), como los archivos JavaScript y CSS ubicados en el directorio `src/`, y los guarda en un directorio `_astro` con nombres de archivo con hash (p. ej., `_astro/index.DRf8L97S.js`), lo cual resulta ideal para el almacenamiento en caché a largo plazo. |
| 14 | + |
| 15 | +Aunque normalmente no es necesario, puedes personalizar los nombres de los archivos de salida cuando sea preciso. Por ejemplo, esto puede resultar útil si tienes scripts con nombres que podrían activar los bloqueadores de anuncios (p. ej., `ads.js`), o si deseas organizar tus recursos siguiendo una convención de nomenclatura concreta. Al personalizar las opciones de salida de Rollup, puedes obtener un mayor control sobre la estructura de compilación de tu proyecto, lo que te permite cumplir con requisitos específicos de organización o implementación. |
| 16 | + |
| 17 | +## Receta |
| 18 | + |
| 19 | +Esta receta configura `vite.environments.client.build.rollupOptions` para generar recursos compilados con la siguiente estructura y patrón de nomenclatura: |
| 20 | +- Archivos de JavaScript (p. ej., scripts directamente asociados a tus páginas o diseños): `dist/js/[name]-[hash].js` |
| 21 | +- Fragmentos de código JavaScript divididos (p. ej., componentes importados dinámicamente o módulos compartidos): `dist/js/chunks/[name]-[hash].js` |
| 22 | +- Otros recursos (p. ej., CSS, imágenes, fuentes): `dist/static/[name]-[hash][extensión]` (p. ej., `dist/static/styles-a1b2c3d4.css`, `dist/static/logo-e5f6g7h8.svg`) |
| 23 | + |
| 24 | +<Steps> |
| 25 | + |
| 26 | +1. Agregar opciones de salida de Vite Rollup. |
| 27 | + |
| 28 | + Modifica tu archivo `astro.config.mjs` para incluir la siguiente configuración de `vite.environments.client.build.rollupOptions.output`. Aquí es donde puedes definir los patrones de nomenclatura personalizados para tus recursos usando los [`entryFileNames`](https://rollupjs.org/configuration-options/# output-entryfilenames), [`chunkFileNames`](https://rollupjs.org/configuration-options/#output-chunkfilenames) y [`assetFileNames`](https://rollupjs.org/configuration-options/#output-assetfilenames) de Rollup: |
| 29 | + |
| 30 | + ```javascript title="astro.config.mjs" ins |
| 31 | + import { defineConfig } from 'astro/config'; |
| 32 | + |
| 33 | + export default defineConfig({ |
| 34 | + // ... |
| 35 | + vite: { |
| 36 | + environments: { |
| 37 | + client: { |
| 38 | + build: { |
| 39 | + rollupOptions: { |
| 40 | + output: { |
| 41 | + // nombres de ruta relativos a `outDir` |
| 42 | + entryFileNames: 'js/[name]-[hash].js', |
| 43 | + chunkFileNames: 'js/chunks/[name]-[hash].js', |
| 44 | + assetFileNames: 'static/[name]-[hash][extname]', |
| 45 | + }, |
| 46 | + }, |
| 47 | + }, |
| 48 | + }, |
| 49 | + }, |
| 50 | + }, |
| 51 | + }); |
| 52 | + ``` |
| 53 | + |
| 54 | + En este ejemplo se usan los siguientes elementos provisionales de nombre de archivo: |
| 55 | + * `[name]`: El nombre original del archivo (sin la extensión ni la ruta). |
| 56 | + * `[hash]`: Un hash basado en el contenido generado para el archivo, fundamental para evitar el almacenamiento en caché. También puedes especificar una longitud, p. ej., `[hash:8]`. Esto garantiza que, al actualizar un recurso, cambie el nombre del archivo, lo que obliga a los navegadores a descargar la nueva versión en lugar de mostrar una versión obsoleta almacenada en caché. |
| 57 | + * `[extname]`: La extensión original del archivo, incluido el punto inicial (p. ej., `.js`, `.css`, `.svg`). |
| 58 | + |
| 59 | + <ReadMore> |
| 60 | + Para consultar la lista completa de provisionales y patrones avanzados disponibles para estas opciones, consulta la [documentación sobre la configuración de Rollup](https://rollupjs.org/configuration-options/). |
| 61 | + </ReadMore> |
| 62 | + |
| 63 | +2. Compila tu proyecto. |
| 64 | + |
| 65 | + Dado que estas personalizaciones de los nombres de archivo solo se aplican al resultado de la compilación de producción, tendrás que ejecutar el comando de compilación de tu proyecto: |
| 66 | + |
| 67 | + <PackageManagerTabs> |
| 68 | + <Fragment slot="npm"> |
| 69 | + ```shell |
| 70 | + npm run build |
| 71 | + ``` |
| 72 | + </Fragment> |
| 73 | + <Fragment slot="pnpm"> |
| 74 | + ```shell |
| 75 | + pnpm build |
| 76 | + ``` |
| 77 | + </Fragment> |
| 78 | + <Fragment slot="yarn"> |
| 79 | + ```shell |
| 80 | + yarn build |
| 81 | + ``` |
| 82 | + </Fragment> |
| 83 | + </PackageManagerTabs> |
| 84 | + |
| 85 | +3. Una vez finalizada la compilación, comprueba tu [directorio de salida](/es/reference/configuration-reference/#outdir) (`dist/` por defecto). |
| 86 | + |
| 87 | + Comprueba que los recursos de compilación del directorio `src` de tu proyecto estén nombrados y organizados según los nuevos patrones. (Los archivos del [directorio `public/`](/es/basics/project-structure/#public) se copian directamente al directorio de salida y no se ven afectados por estas opciones de nomenclatura de Rollup.) |
| 88 | + |
| 89 | + En función del contenido específico de tu proyecto, tu carpeta de compilación tendrá ahora un aspecto similar al siguiente: |
| 90 | + |
| 91 | + <FileTree> |
| 92 | + - dist/ |
| 93 | + - js/ |
| 94 | + - index-a1b2c3d4.js |
| 95 | + - chunks/ |
| 96 | + - common-e5f6g7h8.js |
| 97 | + - img/ |
| 98 | + - logo-i9j0k1l2.png |
| 99 | + - fonts/ |
| 100 | + - myfont-q2w3e4r5.woff2 |
| 101 | + - static_assets/ |
| 102 | + - styles-m3n4o5p6.css |
| 103 | + - index.html |
| 104 | + - about/ |
| 105 | + - index.html |
| 106 | + - ... (otros archivos HTML y recursos públicos) |
| 107 | + </FileTree> |
| 108 | + |
| 109 | +</Steps> |
0 commit comments