this.environment
en Hooks
Feedback
Danos tu opinión en la discusión de feedback sobre la API de Entorno.
Antes de Vite 6, solo estaban disponibles dos entornos: client
y ssr
. Un único argumento options.ssr
en los hooks de plugins como resolveId
, load
y transform
permitía a los autores de plugins diferenciar entre estos dos entornos al procesar módulos. En Vite 6, una aplicación de Vite puede definir cualquier cantidad de entornos nombrados según sea necesario. Se introduce this.environment
en el contexto del plugin para interactuar con el entorno del módulo actual en los hooks.
Ámbito afectado: Autores de Plugins para Vite
Obsolencia Futura
this.environment
fue introducido en v6.0
. La declaración de desuso de options.ssr
está planificada para v7.0
. En ese momento, recomendaremos migrar tus plugins para usar la nueva API. Para identificar tu uso, configura future.removePluginHookSsrArgument
como "warn"
en tu archivo de configuración de Vite.
Motivación
this.environment
no solo permite que la implementación de un hook de plugin conozca el nombre del entorno actual, sino que también da acceso a las opciones de configuración del entorno, información del grafo de módulos y la canalización de transformación (environment.config
, environment.moduleGraph
, environment.transformRequest()
). Tener la instancia del entorno disponible en el contexto permite a los autores de plugins evitar depender de todo el servidor de desarrollo (generalmente en caché al iniciar mediante el hook configureServer
).
Guía de Migración
Para realizar una migración rápida en un plugin existente, reemplaza el argumento options.ssr
por this.environment.name !== 'client'
en los hooks resolveId
, load
y transform
:
import { Plugin } from 'vite'
export function myPlugin(): Plugin {
return {
name: 'my-plugin',
resolveId(id, importer, options) {
const isSSR = options.ssr
const isSSR = this.environment.name !== 'client'
if (isSSR) {
// Lógica específica de SSR
} else {
// Lógica específica del cliente
}
},
}
}
Para una implementación más robusta a largo plazo, el hook del plugin debería manejar múltiples entornos usando opciones detalladas del entorno en lugar de depender del nombre del entorno.