Skip to content

Параметры оптимизации зависимостей

Если не указано иное, параметры в этом разделе применяются только к оптимизатору зависимостей, который используется только в режиме разработки.

optimizeDeps.entries

  • Тип: string | string[]

По умолчанию Vite будет просматривать все ваши .html файлы, чтобы обнаружить зависимости, которые необходимо предварительно объединить (игнорируя node_modules, build.outDir, __tests__ и coverage). Если указано build.rollupOptions.input, Vite будет просматривать эти точки входа вместо этого.

Если ни один из этих вариантов не подходит для ваших нужд, вы можете указать пользовательские точки входа, используя эту опцию - значение должно быть шаблоном tinyglobby или массивом шаблонов, которые относительны от корня проекта Vite. Это перезапишет вывод по умолчанию для точек входа. Только папки node_modules и build.outDir будут игнорироваться по умолчанию, когда optimizeDeps.entries явно определены. Если другие папки необходимо игнорировать, вы можете использовать шаблон игнорирования как часть списка точек входа, помеченный начальным !. Если вы не хотите игнорировать node_modules и build.outDir, вы можете указать вместо этого буквенные строковые пути (без шаблонов tinyglobby).

optimizeDeps.exclude

  • Тип: string[]

Зависимости, которые необходимо исключить из предварительного объединения.

CommonJS

Зависимости CommonJS не должны исключаться из оптимизации. Если зависимость ESM исключена из оптимизации, но имеет вложенную зависимость CommonJS, зависимость CommonJS должна быть добавлена в optimizeDeps.include. Пример:

js
import { defineConfig } from 'vite'
// ---cut---
export default defineConfig({
  optimizeDeps: {
    include: ['esm-dep > cjs-dep']
  }
})

optimizeDeps.include

  • Тип: string[]

По умолчанию связанные пакеты, не находящиеся в node_modules, не подлежат предварительному объединению. Используйте эту опцию, чтобы принудительно предварительно объединить связанный пакет.

Экспериментально: Если вы используете библиотеку с множеством глубоких импортов, вы также можете указать завершающий шаблон glob, чтобы предварительно объединить все глубокие импорты сразу. Это позволит избежать постоянного предварительного объединения каждый раз, когда используется новый глубокий импорт. Оставить отзыв. Например:

js
import { defineConfig } from 'vite'
// ---cut---
export default defineConfig({
  optimizeDeps: {
    include: ['my-lib/components/**/*.vue']
  }
})

optimizeDeps.esbuildOptions

  • Тип: Omit<EsbuildBuildOptions, | 'bundle' | 'entryPoints' | 'external' | 'write' | 'watch' | 'outdir' | 'outfile' | 'outbase' | 'outExtension' | 'metafile'>

Опции, которые можно передать esbuild во время сканирования зависимостей и оптимизации.

Некоторые опции опущены, так как их изменение не будет совместимо с оптимизацией зависимостей Vite.

  • external также опущен, используйте опцию optimizeDeps.exclude Vite
  • plugins объединяются с плагином зависимостей Vite

optimizeDeps.force

  • Тип: boolean

Установите значение true, чтобы принудительно выполнить предварительное объединение зависимостей, игнорируя ранее кэшированные оптимизированные зависимости.

optimizeDeps.holdUntilCrawlEnd

При включении эта опция будет удерживать результаты первых оптимизированных зависимостей до тех пор, пока все статические импорты не будут просканированы при холодном старте. Это позволяет избежать необходимости полной перезагрузки страницы, когда обнаруживаются новые зависимости, и они вызывают генерацию новых общих чанков. Если все зависимости найдены сканером, а также явно определённые в include, лучше отключить эту опцию, чтобы браузер мог обрабатывать больше запросов параллельно.

optimizeDeps.disabled

  • Устарело
  • Экспериментально: Оставить отзыв
  • Тип: boolean | 'build' | 'dev'
  • По умолчанию: 'build'

Эта опция устарела. Начиная с Vite 5.1, предварительное объединение зависимостей во время сборки было удалено. Установка optimizeDeps.disabled в true или 'dev' отключает оптимизатор, а установка в false или 'build' оставляет оптимизатор включенным во время разработки.

Чтобы полностью отключить оптимизатор, используйте optimizeDeps.noDiscovery: true, чтобы запретить автоматическое обнаружение зависимостей, и оставьте optimizeDeps.include неопределённым или пустым.

ПРЕДУПРЕЖДЕНИЕ

Оптимизация зависимостей во время сборки была экспериментальной функцией. Проекты, пробующие эту стратегию, также удалили @rollup/plugin-commonjs, используя build.commonjsOptions: { include: [] }. Если вы сделали это, предупреждение подскажет вам повторно включить его для поддержки только CJS пакетов во время объединения.

optimizeDeps.needsInterop

  • Экспериментально
  • Тип: string[]

Принудительно включает ESM совместимость при импорте этих зависимостей. Vite способен правильно определять, когда зависимость нуждается в совместимости, поэтому эта опция обычно не требуется. Однако различные комбинации зависимостей могут привести к тому, что некоторые из них будут предварительно объединены по-разному. Добавление этих пакетов в needsInterop может ускорить первоначальный запуск, избегая полной перезагрузки страницы. Вы получите предупреждение, если это касается одной из ваших зависимостей, с предложением добавить имя пакета в этот массив в вашей конфигурации.

Выпущено под лицензией MIT.