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) => endpointsAPI নির্গমনের আগে
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) => {
      // Inject analytics snippet before </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); // [] if valid

প্রকাশনা ​

  1. আপনার প্যাকেজের নাম mineproj-plugin-* বা @mineproj/plugin-* দিন
  2. package.json-এ "keywords": ["mineproj-plugin"] যোগ করুন
  3. বৈধতা যাচাই করতে runPluginContract চালান
  4. npm-এ প্রকাশ করুন

Released under the Apache-2.0 License.