Skip to content

Migración desde Vite 5

API de Entorno

Como parte de la nueva y experimental API de Entorno, se ha realizado una gran reestructuración interna. Vite 6 busca evitar cambios disruptivos para facilitar la actualización de la mayoría de los proyectos a esta nueva versión principal. Esperaremos hasta que una gran parte del ecosistema haya migrado antes de estabilizar y recomendar el uso de las nuevas API. Pueden existir algunos casos extremos, pero solo deberían afectar a un uso de bajo nivel por parte de frameworks y herramientas. Hemos trabajado con los mantenedores del ecosistema para mitigar estas diferencias antes del lanzamiento. Si detectas una regresión, por favor abre un problema.

Algunas API internas han sido eliminadas debido a cambios en la implementación de Vite. Si dependías de alguna de ellas, por favor crea una solicitud de función.

API de Ejecución en Vite

La API experimental de Ejecución en Vite ha evolucionado hacia la API de Ejecutor de Módulos (Module Runner API), que se lanza en Vite 6 como parte de la nueva y experimental API de Entorno. Dado que la función era experimental, la eliminación de la API anterior introducida en Vite 5.1 no se considera un cambio disruptivo, pero los usuarios deberán actualizar su uso al equivalente en la API de Ejecutor de Módulos al migrar a Vite 6.

Cambios Generales

Valor predeterminado de resolve.conditions

Este cambio no afecta a los usuarios que no hayan configurado resolve.conditions, ssr.resolve.conditions o ssr.resolve.externalConditions.

En Vite 5, el valor predeterminado de resolve.conditions era [], y algunas condiciones se añadían internamente. El valor predeterminado de ssr.resolve.conditions era el mismo que resolve.conditions.

A partir de Vite 6, algunas de estas condiciones ya no se añaden automáticamente y deben incluirse manualmente en la configuración:

  • resolve.conditions ya no incluye ['module', 'browser', 'development|production'].
  • ssr.resolve.conditions ya no incluye ['module', 'node', 'development|production'].

Los valores predeterminados para estas opciones se han actualizado en consecuencia, y ssr.resolve.conditions ya no usa resolve.conditions como valor predeterminado. La variable development|production se reemplaza dinámicamente por production o development según el valor de process.env.NODE_ENV. Estos valores predeterminados están disponibles en Vite como defaultClientConditions y defaultServerConditions.

Si especificaste un valor personalizado para resolve.conditions o ssr.resolve.conditions, deberás actualizarlo para incluir las nuevas condiciones. Por ejemplo, si antes usabas ['custom'], ahora deberías usar ['custom', ...defaultClientConditions].

Serialización de JSON (json.stringify)

En Vite 5, cuando se establecía json.stringify: true, la opción json.namedExports se deshabilitaba automáticamente.

Desde Vite 6, json.namedExports ya no se deshabilita automáticamente cuando json.stringify está activado. Si deseas mantener el comportamiento anterior, debes configurar json.namedExports: false.

Vite 6 también introduce un nuevo valor predeterminado para json.stringify: 'auto', que solo serializa archivos JSON grandes. Para desactivar este comportamiento, usa json.stringify: false.

Soporte extendido para referencias de recursos en elementos HTML

En Vite 5, solo algunos elementos HTML admitían referencias a archivos que Vite procesaba y empaquetaba (por ejemplo, <link href> y <img src>).

Vite 6 amplía este soporte a más elementos HTML. La lista completa está disponible en la documentación de características HTML.

Para evitar que ciertos elementos sean procesados, puedes agregar el atributo vite-ignore.

postcss-load-config

postcss-load-config se ha actualizado de la versión 4 a la 6. Ahora se requiere tsx o jiti para cargar archivos de configuración de PostCSS escritos en TypeScript en lugar de ts-node. También se necesita yaml para cargar configuraciones en YAML.

Sass ahora utiliza la API moderna por defecto

En Vite 5, la API heredada era la predeterminada para Sass. Vite 5.4 agregó soporte para la API moderna.

Desde Vite 6, la API moderna es la opción predeterminada para Sass. Si prefieres seguir usando la API heredada, puedes configurarla con css.preprocessorOptions.sass.api: 'legacy' / css.preprocessorOptions.scss.api: 'legacy'. Sin embargo, el soporte para la API heredada se eliminará en Vite 7.

Para migrar a la API moderna, consulta la documentación de Sass.

Personalización del nombre del archivo CSS en modo librería

En Vite 5, el nombre del archivo CSS en modo librería siempre era style.css y no se podía cambiar fácilmente.

Desde Vite 6, el nombre predeterminado del archivo CSS ahora usa el "name" del package.json, similar a los archivos de salida JS. Si build.lib.fileName se define como una cadena, este valor también se usará para el archivo CSS. Para configurar un nombre de archivo CSS diferente, puedes usar la nueva opción build.lib.cssFileName.

Si dependías del nombre style.css, debes actualizar las referencias a él. Por ejemplo:

json
{
  "name": "my-lib",
  "exports": {
    "./style.css": "./dist/style.css", // Vite 5
    "./style.css": "./dist/my-lib.css" // Vite 6
  }
}

Si prefieres mantener style.css, configura build.lib.cssFileName: 'style'.

Cambios avanzados

Varios cambios avanzados afectan solo a ciertos usuarios:

Migración desde v4

Consulta primero la Guía de migración desde v4 para ver los cambios necesarios para migrar tu aplicación a Vite 5, y luego continúa con los cambios en esta página.

Publicado bajo licencia MIT. (433bc9c9)