Параметры оптимизации зависимостей
- Связанный: Dependency Pre-Bundling
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
. Пример:
export default defineConfig({
optimizeDeps: {
include: ['esm-dep > cjs-dep'],
},
})
optimizeDeps.include
- Тип:
string[]
По умолчанию связанные пакеты не внутри node_modules
предварительно не объединяются. Используйте этот параметр, чтобы предварительно объединить связанный пакет.
Экспериментально: Если вы используете библиотеку с большим количеством глубоких импортов, вы также можете указать завершающий шаблон glob, чтобы предварительно объединить все глубокие импорты одновременно. Это позволит избежать постоянного предварительного объединения при использовании нового глубокого импорта. Например:
export default defineConfig({
optimizeDeps: {
include: ['my-lib/components/**/*.vue'],
},
})
optimizeDeps.esbuildOptions
- Тип:
EsbuildBuildOptions
Параметры для передачи в esbuild во время сканирования и оптимизации.
Некоторые параметры опущены, поскольку их изменение несовместимо с оптимизацией Vite.
external
также опущен, используйте опцию ViteoptimizeDeps.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
может ускорить холодный запуск, избегая полной перезагрузки страницы. Если это относится к одной из ваших зависимостей, вы получите предупреждение с предложением добавить имя пакета в этот массив в вашей конфигурации.