Skip to content

Beyond Fast

ViteConf 2023

Watch the replay!

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

optimizeDeps.entries

  • Тип: string | string[]

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

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

optimizeDeps.exclude

  • Тип: string[]

Зависимости, которые следует исключить из предварительной сборки.

CommonJS

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

js
export default defineConfig({
  optimizeDeps: {
    include: ['esm-dep > cjs-dep'],
  },
})

optimizeDeps.include

  • Тип: string[]

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

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

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

optimizeDeps.esbuildOptions

Параметры для передачи в esbuild во время сканирования и оптимизации.

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

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

optimizeDeps.force

  • Тип: boolean

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

optimizeDeps.disabled

  • Экспериментальный: Give Feedback
  • Тип: boolean | 'build' | 'dev'
  • По умолчанию: 'build'

Отключает оптимизацию зависимостей, true отключает оптимизатор во время сборки и разработки. Передайте 'build' или 'dev' to only disable the optimizer in one of the modes. Dependency optimization is enabled by default in dev only.

WARNING

Оптимизация зависимостей в режиме сборки носит экспериментальный характер. Если этот параметр включен, он устраняет одно из наиболее существенных различий между dev и prod. @rollup/plugin-commonjs в этом случае больше не нужен, поскольку esbuild преобразует зависимости только для CJS в ESM.

Если вы хотите попробовать эту стратегию сборки, вы можете использовать optimizeDeps.disabled: false. @rollup/plugin-commonjs можно удалить, передав build.commonjsOptions: { include: [] }.

optimizeDeps.needsInterop

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

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

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