Skip to content

Commit e40b7ca

Browse files
committed
1 parent 04101fe commit e40b7ca

8 files changed

Lines changed: 65 additions & 15 deletions

File tree

docs/config/build-options.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,8 @@ Indica si se debe generar un archivo de manifiesto que contenga un mapeo de nomb
247247

248248
Cuando el valor es una cadena, se usará como la ruta del archivo de manifiesto relativa a `build.outDir`. Cuando se establece en `true`, la ruta será `.vite/manifest.json`.
249249

250+
Si estás escribiendo un plugin y necesitas inspeccionar los CSS relacionados y recursos estáticos de cada fragmento o recurso de salida durante la compilación, también puedes usar la [API de metadatos del paquete de salida `viteMetadata`](/guide/api-plugin#metadatos-del-paquete-de-salida).
251+
250252
## build.ssrManifest
251253

252254
- **Tipo:** `boolean`

docs/guide/api-plugin.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -466,6 +466,44 @@ Este hook no se invocará si estás utilizando un framework que tenga un manejo
466466
}
467467
```
468468
469+
## Metadatos del Paquete de Salida
470+
471+
Durante la compilación, Vite agrega un campo específico `viteMetadata` a los objetos de salida de compilación de Rolldown.
472+
473+
Esto está disponible a través de:
474+
475+
- `RenderedChunk` (por ejemplo en `renderChunk` y `augmentChunkHash`)
476+
- `OutputChunk` y `OutputAsset` (por ejemplo en `generateBundle` y `writeBundle`)
477+
478+
`viteMetadata` proporciona:
479+
480+
- `viteMetadata.importedCss: Set<string>`
481+
- `viteMetadata.importedAssets: Set<string>`
482+
483+
Esto es útil cuando se escriben plugins que necesitan inspeccionar CSS emitidos y recursos estáticos sin depender de [`build.manifest`](/config/build-options#build-manifest).
484+
485+
Ejemplo:
486+
487+
```ts [vite.config.ts]
488+
function outputMetadataPlugin(): Plugin {
489+
return {
490+
name: 'output-metadata-plugin',
491+
generateBundle(_, bundle) {
492+
for (const output of Object.values(bundle)) {
493+
const css = output.viteMetadata?.importedCss
494+
const assets = output.viteMetadata?.importedAssets
495+
if (!css?.size && !assets?.size) continue
496+
497+
console.log(output.fileName, {
498+
css: css ? [...css] : [],
499+
assets: assets ? [...assets] : [],
500+
})
501+
}
502+
},
503+
}
504+
}
505+
```
506+
469507
## Orden de Plugins
470508
471509
Un plugin de Vite también puede especificar una propiedad `enforce` (similar a los cargadores de paquetes web) para ajustar su orden de aplicación. El valor de `enforce` puede ser `"pre"` o `"post"`. Los plugins resueltos estarán en el siguiente orden:

docs/guide/assets.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,12 @@ El directorio predeterminado es `<root>/public`, pero esto se puede configurar a
119119

120120
Ten en cuenta que siempre debes hacer referencia a los recursos de `public` utilizando una ruta absoluta desde la raíz. Por ejemplo, `public/icon.png` debería ser referenciado en el código fuente como `/icon.png`.
121121

122+
::: tip Elección entre importaciones y la carpeta `public`
123+
124+
En general, es preferible **importar recursos** a menos que necesites específicamente las garantías que proporciona la carpeta `public`.
125+
126+
:::
127+
122128
## new URL(url, import.meta.url)
123129

124130
[import.meta.url](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import.meta) es una característica nativa de ESM que expone la URL del módulo actual. Combinándolo con el [constructor de URL](https://developer.mozilla.org/en-US/docs/Web/API/URL) nativo, podemos obtener la URL completa y resuelta de un recurso estático utilizando la ruta relativa de un Módulo JavaScript:
@@ -147,7 +153,7 @@ Durante la compilación para producción, Vite realizará las transformaciones n
147153
const imgUrl = new URL(imagePath, import.meta.url).href
148154
```
149155
150-
::: detalles Cómo funciona
156+
::: detalles Cómo funciona
151157
Vite transformará la función `getImageUrl` a:
152158
153159
```js

docs/guide/build.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ export default defineConfig({
9595
})
9696
```
9797

98-
Con el indicador `--watch` habilitado, los cambios en `vite.config.js`, así como cualquier archivo que se empaquete, desencadenarán una recompilación.
98+
Con el indicador `--watch` habilitado, los cambios en los archivos que se empaquetan desencadenarán una recompilación. Ten en cuenta que los cambios en la configuración y sus dependencias requieren reiniciar el comando de compilación.
9999

100100
## Aplicación multipáginas
101101

docs/guide/dep-pre-bundling.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Cuando ejecutas `vite` por primera vez, Vite preempaqueta las dependencias de tu
66

77
Este es Vite realizando lo que llamamos "preempaquetado de dependencias". Este proceso tiene dos propósitos:
88

9-
1. **Compatibilidad con CommonJS y UMD:** Durante el desarrollo, el desarrollador de Vite sirve todo el código como ESM nativo. Por lo tanto, Vite primero debe convertir las dependencias que se envían como CommonJS o UMD en ESM.
9+
1. **Compatibilidad con CommonJS y UMD:** Durante el desarrollo, Vite sirve todo el código como ESM nativo. Por lo tanto, Vite primero debe convertir las dependencias que se envían como CommonJS o UMD en ESM.
1010

1111
Al convertir las dependencias de CommonJS, Vite realiza un análisis de importación inteligente para que las importaciones con nombre a los módulos de CommonJS funcionen como se espera, incluso si las exportaciones se asignan dinámicamente (por ejemplo, React):
1212

docs/guide/env-and-mode.md

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,14 @@ Algunas constantes incorporadas están disponibles en todos los casos:
3333
3434
Vite expone las variables de entorno bajo el objeto `import.meta.env` como cadenas automáticamente.
3535
36-
Para evitar la filtración accidental de variables de entorno al cliente, solo las variables prefijadas con `VITE_` se exponen en el código procesado por Vite. Por ejemplo, para las siguientes variables de entorno:
36+
Las variables con el prefijo `VITE_` se expondrán en el código fuente del lado del cliente después del empaquetado de Vite. Para evitar la filtración accidental de variables de entorno al cliente, evita usar este prefijo. Como ejemplo, considera lo siguiente:
3737
3838
```[.env]
3939
VITE_SOME_KEY=123
4040
DB_PASSWORD=foobar
4141
```
4242
43-
Solo `VITE_SOME_KEY` se expondrá como `import.meta.env.VITE_SOME_KEY` en el código fuente del cliente, pero `DB_PASSWORD` no.
43+
El valor analizado de `VITE_SOME_KEY` `"123"` – se expondrá en el cliente, pero el valor de `DB_PASSWORD` no. Puedes comprobar esto añadiendo lo siguiente a tu código:
4444
4545
```js
4646
console.log(import.meta.env.VITE_SOME_KEY) // "123"
@@ -53,6 +53,12 @@ Si deseas personalizar el prefijo de las variables de entorno, consulta la opci
5353
Como se muestra arriba, `VITE_SOME_KEY` es un número pero devuelve una cadena cuando se analiza. Lo mismo ocurriría con las variables de entorno booleanas. Asegúrate de convertir al tipo deseado cuando las uses en tu código.
5454
:::
5555
56+
:::warning Protección de secretos en el código fuente
57+
58+
Las variables `VITE_*` _no_ deben contener información sensible como claves de API. Los valores de estas variables se empaquetan en tu código fuente en tiempo de compilación. Para despliegues en producción, considera un servidor backend o funciones serverless/edge para proteger adecuadamente los secretos en el código fuente.
59+
60+
:::
61+
5662
### Archivos `.env`
5763
5864
Vite utiliza [dotenv](https://github.com/motdotla/dotenv) para cargar variables de entorno adicionales desde los siguientes archivos en tu [directorio de entorno](/config/shared-options.md#envdir):
@@ -93,14 +99,6 @@ NEW_KEY2=test\$foo # test$foo
9399
NEW_KEY3=test$KEY # test123
94100
```
95101
96-
:::warning NOTAS DE SEGURIDAD
97-
98-
- Los archivos `.env.*.local` son solo locales y pueden contener variables sensibles. Debes agregar `*.local` a tu `.gitignore` para evitar que se suban a git.
99-
100-
- Dado que cualquier variable expuesta en tu código fuente de Vite terminará en tu paquete de cliente, las variables `VITE_*` no deben contener información sensible.
101-
102-
:::
103-
104102
::: details Expansión de variables en orden inverso
105103
106104
Vite admite la expansión de variables en orden inverso.
@@ -118,6 +116,12 @@ Para evitar problemas de interoperabilidad, se recomienda evitar depender de est
118116
119117
:::
120118
119+
:::warning Ignorando archivos `.env` locales
120+
121+
Los archivos `.env.*.local` son solo locales y pueden contener variables sensibles. Debes agregar `*.local` a tu `.gitignore` para evitar que se suban a git.
122+
123+
:::
124+
121125
## IntelliSense para TypeScript
122126
123127
Por defecto, Vite proporciona definiciones de tipo para `import.meta.env` en [`vite/client.d.ts`](https://github.com/vitejs/vite/blob/main/packages/vite/client.d.ts). Si bien puedes definir más variables de entorno personalizadas en archivos `.env.[mode]`, es posible que desees obtener IntelliSense de TypeScript para las variables de entorno definidas por el usuario que tienen el prefijo `VITE_`.

docs/guide/features.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ Esto se debe a que `esbuild` solo realiza la transpilación sin información de
7171

7272
Debes configurar `"isolatedModules": true` en el `tsconfig.json` en `compilerOptions`, para que TS te advierta sobre las funcionalidades omitidas con la transpilación aislada.
7373

74-
Si una dependencia no funciona bien con `"isolatedModules": true`, puedes usar `"skipLibCheck": true` para suprimir temporalmente los errores hasta que se solucione.
74+
Si una dependencia no funciona bien con `"isolatedModules": true`, puedes usar `"skipLibCheck": true` para suprimir temporalmente los errores hasta que se solucione de forma upstream.
7575

7676
#### `useDefineForClassFields`
7777

docs/guide/philosophy.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Vite se ha centrado en el rendimiento desde sus [orígenes](./why.md). Su arquit
2020

2121
## Construyendo Frameworks de Trabajo sobre Vite
2222

23-
Aunque Vite se puede utilizar directamente por los usuarios, brilla como una herramienta para crear frameworks. El núcleo de Vite es independiente del framework, pero existen plugins pulidos para cada framework de interfaz de usuario (IU). Su [API en JavaScript](./api-javascript.md) permite a los autores de frameworks de aplicaciones utilizar las funcionalidades de Vite para crear experiencias personalizadas para sus usuarios. Vite incluye soporte para [primitivos de SSR](./ssr.md), que generalmente están presentes en herramientas de nivel superior pero que son fundamentales para construir web frameworks modernos. Y los plugins de Vite completan el panorama al ofrecer una forma de compartir entre diferentes frameworks. Vite también es una excelente opción cuando se combina con [frameworks de backend](./backend-integration.md) como [Ruby](https://vite-ruby.netlify.app/) y [Laravel](https://laravel.com/docs/10.x/vite).
23+
Aunque Vite se puede utilizar directamente por los usuarios, brilla como una herramienta para crear frameworks. El núcleo de Vite es independiente del framework, pero existen plugins pulidos para cada framework de interfaz de usuario (IU). Su [API en JavaScript](./api-javascript.md) permite a los autores de frameworks de aplicaciones utilizar las funcionalidades de Vite para crear experiencias personalizadas para sus usuarios. Vite incluye soporte para [primitivos de SSR](./ssr.md), que generalmente están presentes en herramientas de nivel superior pero que son fundamentales para construir web frameworks modernos. Y los plugins de Vite completan el panorama al ofrecer una forma de compartir entre diferentes frameworks. Vite también es una excelente opción cuando se combina con [frameworks de backend](./backend-integration.md) como [Ruby](https://vite-ruby.netlify.app/) y [Laravel](https://laravel.com/docs/vite).
2424

2525
## Un ecosistema activo
2626

0 commit comments

Comments
 (0)