Skip to content

گزینه‌های بهینه‌سازی وابستگی‌ها

مگر اینکه ذکر شده باشه، گزینه‌های این بخش فقط به بهینه‌ساز وابستگی‌ها اعمال می‌شن که فقط در حالت توسعه استفاده می‌شه.

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 اضافه بشه. مثال:

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

optimizeDeps.include

  • تایپ: []string

به‌طور پیش‌فرض، پکیج‌های لینک‌شده‌ای که داخل node_modules نیستن پیش‌باندل نمی‌شن. از این گزینه استفاده کنید تا یه پکیج لینک‌شده رو مجبور به پیش‌باندل شدن کنید.

آزمایشی: اگه از کتابخونه‌ای با ایمپورت‌های عمیق زیاد استفاده می‌کنید، می‌تونید یه الگوی گلوب انتهایی هم مشخص کنید تا همه ایمپورت‌های عمیق رو یه‌جا پیش‌باندل کنه. این کار از پیش‌باندل مداوم هر بار که یه ایمپورت عمیق جدید استفاده می‌شه جلوگیری می‌کنه. بازخورد بدید. مثلاً:

js
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

وقتی فعال باشه، نتایج اولیه بهینه‌سازی وابستگی‌ها رو تا وقتی که همه ایمپورت‌های استاتیک موقع 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 می‌تونه شروع سرد رو با جلوگیری از بارگذاری مجدد کل صفحه سریع‌تر کنه. اگه این مورد برای یکی از وابستگی‌هاتون پیش بیاد، یه هشدار می‌گیرید که پیشنهاد می‌ده اسم پکیج رو به این آرایه توی پیکربندی‌تون اضافه کنید.

تحت مجوز MIT منتشر شده. (dev)