فارسی

معماری پلاگین Vite را کاوش کرده و ساخت پلاگین‌های سفارشی برای بهبود گردش کار توسعه خود را بیاموزید. بر مفاهیم کلیدی با مثال‌های عملی برای مخاطبان جهانی مسلط شوید.

رمزگشایی از معماری پلاگین Vite: راهنمای جهانی برای ساخت پلاگین‌های سفارشی

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

درک اصول اصلی Vite

قبل از پرداختن به ساخت پلاگین، درک اصول بنیادین Vite ضروری است:

نقش پلاگین‌ها در اکوسیستم Vite

معماری پلاگین Vite به گونه‌ای طراحی شده است که بسیار توسعه‌پذیر باشد. پلاگین‌ها می‌توانند:

پلاگین‌ها کلید تطبیق Vite با نیازمندی‌های مختلف پروژه، از تغییرات ساده تا یکپارچه‌سازی‌های پیچیده، هستند.

معماری پلاگین Vite: یک بررسی عمیق

یک پلاگین Vite اساساً یک شیء جاوا اسکریپت با ویژگی‌های خاص است که رفتار آن را تعریف می‌کند. بیایید عناصر کلیدی را بررسی کنیم:

پیکربندی پلاگین

فایل `vite.config.js` (یا `vite.config.ts`) جایی است که شما پروژه Vite خود را پیکربندی می‌کنید، از جمله مشخص کردن پلاگین‌هایی که باید استفاده شوند. گزینه `plugins` یک آرایه از اشیاء پلاگین یا توابعی که اشیاء پلاگین را برمی‌گردانند، می‌پذیرد.

// vite.config.js
import myPlugin from './my-plugin';

export default {
  plugins: [
    myPlugin(), // فراخوانی تابع پلاگین برای ایجاد یک نمونه از پلاگین
  ],
};

ویژگی‌های شیء پلاگین

یک شیء پلاگین Vite می‌تواند چندین ویژگی داشته باشد که رفتار آن را در مراحل مختلف فرایند ساخت تعریف می‌کند. در اینجا تفکیکی از رایج‌ترین ویژگی‌ها آورده شده است:

هوک‌های پلاگین و ترتیب اجرا

پلاگین‌های Vite از طریق یک سری هوک‌ها عمل می‌کنند که در مراحل مختلف فرایند ساخت فعال می‌شوند. درک ترتیب اجرای این هوک‌ها برای نوشتن پلاگین‌های مؤثر حیاتی است.

  1. config: تغییر پیکربندی Vite.
  2. configResolved: دسترسی به پیکربندی حل‌شده.
  3. configureServer: تغییر سرور توسعه (فقط در حین توسعه).
  4. transformIndexHtml: تغییر فایل `index.html`.
  5. buildStart: شروع فرایند ساخت.
  6. resolveId: تحلیل شناسه‌های ماژول.
  7. load: بارگذاری محتوای ماژول.
  8. transform: تغییر کد ماژول.
  9. handleHotUpdate: مدیریت جایگزینی ماژول داغ (HMR).
  10. writeBundle: تغییر باندل خروجی قبل از نوشتن روی دیسک.
  11. closeBundle: پس از نوشته شدن باندل خروجی روی دیسک فراخوانی می‌شود.
  12. buildEnd: پایان فرایند ساخت.

ایجاد اولین پلاگین سفارشی Vite

بیایید یک پلاگین ساده Vite ایجاد کنیم که یک بنر به بالای هر فایل جاوا اسکریپت در ساخت پروداکشن اضافه می‌کند. این بنر شامل نام و نسخه پروژه خواهد بود.

پیاده‌سازی پلاگین

// banner-plugin.js
import { readFileSync } from 'node:fs';
import { resolve } from 'node:path';

export default function bannerPlugin() {
  return {
    name: 'banner-plugin',
    apply: 'build',
    transform(code, id) {
      if (!id.endsWith('.js')) {
        return code;
      }

      const packageJsonPath = resolve(process.cwd(), 'package.json');
      const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
      const banner = `/**\n * Project: ${packageJson.name}\n * Version: ${packageJson.version}\n */\n`;

      return banner + code;
    },
  };
}

توضیحات:

یکپارچه‌سازی پلاگین

پلاگین را در فایل `vite.config.js` خود وارد کرده و آن را به آرایه `plugins` اضافه کنید:

// vite.config.js
import bannerPlugin from './banner-plugin';

export default {
  plugins: [
    bannerPlugin(),
  ],
};

اجرای ساخت

اکنون، دستور `npm run build` (یا دستور ساخت پروژه خود) را اجرا کنید. پس از اتمام ساخت، فایل‌های جاوا اسکریپت تولید شده در دایرکتوری `dist` را بررسی کنید. بنر را در بالای هر فایل خواهید دید.

تکنیک‌های پیشرفته پلاگین

فراتر از تغییرات ساده کد، پلاگین‌های Vite می‌توانند از تکنیک‌های پیشرفته‌تری برای افزایش قابلیت‌های خود استفاده کنند.

ماژول‌های مجازی

ماژول‌های مجازی به پلاگین‌ها اجازه می‌دهند ماژول‌هایی ایجاد کنند که به عنوان فایل‌های واقعی روی دیسک وجود ندارند. این برای تولید محتوای پویا یا ارائه داده‌های پیکربندی به برنامه مفید است.

// virtual-module-plugin.js
export default function virtualModulePlugin(options) {
  const virtualModuleId = 'virtual:my-module';
  const resolvedVirtualModuleId = '\0' + virtualModuleId; // پیشوند \0 برای جلوگیری از پردازش توسط Rollup

  return {
    name: 'virtual-module-plugin',
    resolveId(id) {
      if (id === virtualModuleId) {
        return resolvedVirtualModuleId;
      }
    },
    load(id) {
      if (id === resolvedVirtualModuleId) {
        return `export default ${JSON.stringify(options)};`;
      }
    },
  };
}

در این مثال:

استفاده از ماژول مجازی

// vite.config.js
import virtualModulePlugin from './virtual-module-plugin';

export default {
  plugins: [
    virtualModulePlugin({ message: 'Hello from virtual module!' }),
  ],
};
// main.js
import message from 'virtual:my-module';

console.log(message.message); // خروجی: Hello from virtual module!

تغییر Index HTML

هوک `transformIndexHtml` به شما امکان می‌دهد فایل `index.html` را تغییر دهید، مانند تزریق اسکریپت‌ها، استایل‌ها یا متا تگ‌ها. این برای افزودن ردیابی تحلیلی، پیکربندی متادیتای رسانه‌های اجتماعی یا سفارشی‌سازی ساختار HTML مفید است.

// inject-script-plugin.js
export default function injectScriptPlugin() {
  return {
    name: 'inject-script-plugin',
    transformIndexHtml(html) {
      return html.replace(
        '',
        ``
      );
    },
  };
}

این پلاگین یک عبارت `console.log` را درست قبل از تگ پایانی `` به فایل `index.html` تزریق می‌کند.

کار با سرور توسعه

هوک `configureServer` دسترسی به نمونه سرور توسعه را فراهم می‌کند، و به شما امکان می‌دهد میان‌افزار سفارشی اضافه کنید، رفتار سرور را تغییر دهید یا درخواست‌های API را مدیریت کنید.

// mock-api-plugin.js
export default function mockApiPlugin() {
  return {
    name: 'mock-api-plugin',
    configureServer(server) {
      server.middlewares.use('/api/data', (req, res) => {
        res.writeHead(200, { 'Content-Type': 'application/json' });
        res.end(JSON.stringify({ message: 'Hello from mock API!' }));
      });
    },
  };
}

این پلاگین یک میان‌افزار اضافه می‌کند که درخواست‌های به `/api/data` را رهگیری کرده و یک پاسخ JSON با یک پیام ساختگی برمی‌گرداند. این برای شبیه‌سازی نقاط پایانی API در حین توسعه، قبل از پیاده‌سازی کامل بک‌اند، مفید است. به یاد داشته باشید که این پلاگین فقط در حین توسعه اجرا می‌شود.

مثال‌ها و موارد استفاده واقعی پلاگین‌ها

در اینجا چند مثال عملی از نحوه استفاده از پلاگین‌های Vite برای حل چالش‌های رایج توسعه آورده شده است:

بهترین شیوه‌ها برای نوشتن پلاگین‌های Vite

این بهترین شیوه‌ها را برای ایجاد پلاگین‌های Vite قوی و قابل نگهداری دنبال کنید:

اشکال‌زدایی پلاگین‌های Vite

اشکال‌زدایی پلاگین‌های Vite می‌تواند چالش‌برانگیز باشد، اما چندین تکنیک وجود دارد که می‌تواند کمک کند:

نتیجه‌گیری: توانمندسازی توسعه خود با پلاگین‌های Vite

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

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