this.environment
в хуках
Обратная связь
Оставьте нам отзыв в обсуждении обратной связи по Environment API
До Vite 6 было доступно только два окружения: client
и ssr
. Один аргумент плагина options.ssr
в хуках resolveId
, load
и transform
позволял авторам плагинов различать эти два окружения при обработке модулей в хуках плагинов. В Vite 6 приложение Vite может определять любое количество именованных окружений по мере необходимости. Мы вводим this.environment
в контексте плагина для взаимодействия с окружением текущего модуля в хуках.
Область применения: Авторы плагинов Vite
Депрекация в будущем
this.environment
был введен в v6.0
. Депрекация options.ssr
запланировано на v7.0
. В этот момент мы начнем рекомендовать миграцию ваших плагинов на использование нового API. Чтобы определить ваше использование, установите future.removePluginHookSsrArgument
в "warn"
в вашей конфигурации vite.
Мотивация
this.environment
не только позволяет реализации хуков плагина знать текущее имя окружения, но также предоставляет доступ к параметрам конфигурации окружения, информации о графе модулей и конвейеру трансформации (environment.config
, environment.moduleGraph
, environment.transformRequest()
). Наличие экземпляра окружения в контексте позволяет авторам плагинов избежать зависимости от всего dev-сервера (обычно кэшируется при запуске через хук configureServer
).
Руководство по переходу
Для быстрой адаптации существующего плагина замените аргумент options.ssr
на this.environment.name !== 'client'
в хуках resolveId
, load
и 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) {
// Логика, специфичная для SSR
} else {
// Логика, специфичная для клиента
}
},
}
}
Для более надёжной долгосрочной реализации хук плагина должен обрабатывать несколько окружений, используя детализированные параметры окружения вместо того, чтобы полагаться на имя окружения.