Skip to content

تطوير الإضافات ​

إضافات mineproj توسع خط أنابيب البناء باستخدام الخطافات والمكونات.

عقد الإضافة ​

الإضافة هي كائن بالخصائص التالية:

الخاصيةالنوعمطلوبالوصف
namestring✅اسم فريد للإضافة
hooksRecord<string, Function>اختياريمعالجات خطافات دورة الحياة
viteVitePlugin[]اختياريإضافات Vite لحقنها
componentsRecord<string, Component>اختياريمكونات لتسجيلها
optionsSchemaZodSchemaاختياريمخطط لخيارات الإضافة
setupFunctionاختياريخطاف وقت التثبيت

مثال ​

ts
import { definePlugin } from '@mineproj/core';

export default definePlugin({
  name: 'mineproj-plugin-hello',
  hooks: {
    'build:done': () => {
      console.log('Build complete!');
    },
  },
});

خطافات دورة الحياة ​

الخطافالنوعالتوقيعوقت الاستدعاء
config:resolvedwaterfall(config, ctx) => configبعد تحميل الإعدادات
data:loadedseq(_, ctx) => voidبعد تحميل مجموعة البيانات
data:validatedseq(_, ctx) => voidبعد التحقق من صحة البيانات
routes:collectwaterfall(routes, ctx) => routesبعد جمع المسارات
api:endpointswaterfall(endpoints, ctx) => endpointsقبل إصدار API
render:beforewaterfall(html, ctx) => htmlقبل تقديم كل صفحة
emitseq(_, ctx) => voidبعد كتابة جميع الملفات
build:doneseq(_, ctx) => voidبعد اكتمال البناء

إضافة مع خيارات ​

ts
import { z } from 'zod';
import { definePlugin } from '@mineproj/core';

export default definePlugin({
  name: '@mineproj/plugin-analytics',
  optionsSchema: z.object({
    provider: z.enum(['umami', 'plausible', 'ga']),
    id: z.string(),
  }),
  hooks: {
    'render:before': (html, ctx) => {
      // حقن مقتطف التحليلات قبل </head>
      return html.replace('</head>', `${snippet}\n</head>`);
    },
  },
});

استخدام إضافة ​

ts
// mineproj.config.ts
import { defineSeoPlugin } from '@mineproj/plugin-seo';

export default defineConfig({
  plugins: [
    defineSeoPlugin({ siteUrl: 'https://example.com', siteTitle: 'My Site' }),
  ],
});

اختبار العقد ​

ts
import { runPluginContract } from '@mineproj/test-utils';
const result = runPluginContract(myPlugin);
console.log(result.errors); // [] إذا كان صحيحًا

النشر ​

  1. سمِّ حزمتك mineproj-plugin-* أو @mineproj/plugin-*
  2. أضف "keywords": ["mineproj-plugin"] إلى ملف package.json
  3. قم بتشغيل runPluginContract للتحقق من الصحة
  4. انشر على npm

Released under the Apache-2.0 License.