گزینههای بهینهسازی وابستگیها
- مرتبط: پیشباندل کردن وابستگیها
مگر اینکه ذکر شده باشه، گزینههای این بخش فقط به بهینهساز وابستگیها اعمال میشن که فقط در حالت توسعه استفاده میشه.
optimizeDeps.entries
- تایپ:
[]string | string
بهطور پیشفرض، Vite همه فایلهای .html
شما رو بررسی میکنه تا وابستگیهایی که باید پیشباندل بشن رو پیدا کنه (با نادیده گرفتن node_modules
، build.outDir
، __tests__
و coverage
). اگه build.rollupOptions.input
مشخص شده باشه، Vite به جای اون، اون نقاط ورود رو بررسی میکنه.
اگه هیچکدوم از اینها نیاز شما رو برآورده نکنه، میتونید با این گزینه نقاط ورود سفارشی رو مشخص کنید - مقدار باید یه الگوی tinyglobby
یا آرایهای از الگوها باشه که نسبت به ریشه پروژه Vite هستن. این کار حدس نقاط ورود پیشفرض رو بازنویسی میکنه. وقتی optimizeDeps.entries
بهصراحت تعریف بشه، فقط پوشههای node_modules
و build.outDir
بهطور پیشفرض نادیده گرفته میشن. اگه نیاز باشه پوشههای دیگه هم نادیده گرفته بشن، میتونید از الگوی نادیدهگرفتن با علامت !
در ابتدای لیست نقاط ورود استفاده کنید. اگه نمیخواید node_modules
و build.outDir
نادیده گرفته بشن، میتونید به جای الگوهای tinyglobby
از مسیرهای رشتهای دقیق استفاده کنید.
optimizeDeps.exclude
- تایپ:
[]string
وابستگیهایی که باید از پیشباندل کردن مستثنا بشن.
CommonJS
وابستگیهای CommonJS نباید از بهینهسازی مستثنا بشن. اگه یه وابستگی ESM از بهینهسازی مستثنا بشه، اما یه وابستگی CommonJS تودرتو داشته باشه، اون وابستگی CommonJS باید به optimizeDeps.include
اضافه بشه. مثال:
export default defineConfig({
optimizeDeps: {
include: ['esm-dep > cjs-dep'],
},
})
optimizeDeps.include
- تایپ:
[]string
بهطور پیشفرض، پکیجهای لینکشدهای که داخل node_modules
نیستن پیشباندل نمیشن. از این گزینه استفاده کنید تا یه پکیج لینکشده رو مجبور به پیشباندل شدن کنید.
آزمایشی: اگه از کتابخونهای با ایمپورتهای عمیق زیاد استفاده میکنید، میتونید یه الگوی گلوب انتهایی هم مشخص کنید تا همه ایمپورتهای عمیق رو یهجا پیشباندل کنه. این کار از پیشباندل مداوم هر بار که یه ایمپورت عمیق جدید استفاده میشه جلوگیری میکنه. بازخورد بدید. مثلاً:
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
- آزمایشی: بازخورد بدید
- تایپ:
boolean
- پیشفرض:
true
وقتی فعال باشه، نتایج اولیه بهینهسازی وابستگیها رو تا وقتی که همه ایمپورتهای استاتیک موقع cold start بررسی بشن نگه میداره. این کار از نیاز به بارگذاری مجدد کل صفحه وقتی وابستگیهای جدید پیدا میشن و تکههای مشترک جدیدی تولید میکنن جلوگیری میکنه. اگه همه وابستگیها توسط اسکنر به علاوه اونایی که توی 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 interop رو اجباری میکنه. Vite معمولاً میتونه درست تشخیص بده که کی یه وابستگی به interop نیاز داره، پس این گزینه عموماً لازم نیست. اما ترکیبهای مختلف وابستگیها ممکنه باعث بشه بعضیهاشون متفاوت پیشباندل بشن. اضافه کردن این پکیجها به needsInterop
میتونه شروع سرد رو با جلوگیری از بارگذاری مجدد کل صفحه سریعتر کنه. اگه این مورد برای یکی از وابستگیهاتون پیش بیاد، یه هشدار میگیرید که پیشنهاد میده اسم پکیج رو به این آرایه توی پیکربندیتون اضافه کنید.