Skip to content

মার্কডাউন প্লাগিন এবং এক্সটেনশন

মার্কডাউন প্লাগিন এবং এক্সটেনশন আপনাকে বেসিক সিনট্যাক্সের বাইরে ফিচার যোগ করতে দেয়, যা টেবিল, ফুটনোট, টাস্ক লিস্ট এবং আরও অনেক কিছু সক্ষম করে।

জনপ্রিয় মার্কডাউন প্রসেসর

Markdown-it

প্লাগিন ইকোসিস্টেম সহ একটি দ্রুত এবং এক্সটেন্সিবল মার্কডাউন পার্সার।

javascript
const md = require('markdown-it')();

// প্লাগিন সক্ষম করুন
md.use(require('markdown-it-footnote'))
  .use(require('markdown-it-abbr'))
  .use(require('markdown-it-emoji'));

const result = md.render('# Hello :smile:');

Remark

প্লাগিন দ্বারা পরিচালিত মার্কডাউন প্রসেসর, unified collective এর অংশ।

javascript
const remark = require('remark');
const html = require('remark-html');
const gfm = require('remark-gfm');

remark()
  .use(gfm)
  .use(html)
  .process('## Hello **world**!', (err, file) => {
    console.log(String(file));
  });

Marked

গতি এবং নমনীয়তার জন্য একটি লো-লেভেল মার্কডাউন কম্পাইলার।

javascript
const marked = require('marked');

// marked কনফিগার করুন
marked.setOptions({
  breaks: true,
  gfm: true,
  highlight: function(code, lang) {
    return hljs.highlight(code, { language: lang }).value;
  }
});

const html = marked.parse('# Heading');

অপরিহার্য প্লাগিন

টেবিল

মার্কডাউনে টেবিল সাপোর্ট যোগ করুন:

markdown
| Feature | Support |
|---------|---------|
| Tables  | ✅      |
| Syntax  | Easy    |

প্লাগিন: markdown-it-table, remark-gfm

ফুটনোট

আপনার ডকুমেন্টে ফুটনোট যোগ করুন:

markdown
এটি একটি বিবৃতি[^1] যার একটি রেফারেন্স প্রয়োজন।

[^1]: এটি ফুটনোট কন্টেন্ট।

প্লাগিন: markdown-it-footnote, remark-footnotes

টাস্ক লিস্ট

ইন্টারঅ্যাক্টিভ চেকবক্স:

markdown
- [x] সম্পূর্ণ টাস্ক
- [ ] অসম্পূর্ণ টাস্ক
- [ ] অন্য টাস্ক

প্লাগিন: markdown-it-task-lists, remark-gfm

ইমোজি

ইমোজি সাপোর্ট যোগ করুন:

markdown
আমি :heart: মার্কডাউন! :rocket:

প্লাগিন: markdown-it-emoji, remark-emoji

সিনট্যাক্স হাইলাইটিং

কোড ব্লক হাইলাইট করুন:

markdown
```javascript
function hello() {
  console.log("Hello!");
}

প্লাগিন: `highlight.js`, `prism.js`

## উন্নত প্লাগিন

### গাণিতিক সমীকরণ

LaTeX/KaTeX সমীকরণ রেন্ডার করুন:

```markdown
ইনলাইন গণিত: $E=mc^2$

ব্লক গণিত:
$$
\int_0^\infty e^{-x^2} dx = \frac{\sqrt{\pi}}{2}
$$

প্লাগিন:

  • markdown-it-katex
  • remark-math + rehype-katex
  • markdown-it-texmath

ডায়াগ্রাম

Mermaid দিয়ে ডায়াগ্রাম তৈরি করুন:

markdown
```mermaid
graph TD;
    A-->B;
    A-->C;
    B-->D;
    C-->D;

প্লাগিন: `mermaid`, `markdown-it-mermaid`

### বিষয়বস্তু সূচি

স্বয়ংক্রিয়ভাবে বিষয়বস্তু সূচি তৈরি করুন:

```markdown
[[toc]]

# সেকশন 1
## সাবসেকশন 1.1

# সেকশন 2

প্লাগিন: markdown-it-toc, remark-toc

ডেফিনিশন লিস্ট

ডেফিনিশন লিস্ট সাপোর্ট যোগ করুন:

markdown
Term 1
: Definition 1

Term 2
: Definition 2a
: Definition 2b

প্লাগিন: markdown-it-deflist

কন্টেইনার/অ্যাডমনিশন

কাস্টম ব্লক কন্টেইনার:

markdown
::: warning
এটি একটি সতর্কতা বার্তা
:::

::: tip
এটি একটি সহায়ক টিপস
:::

প্লাগিন: markdown-it-container, remark-custom-blocks

কোড এনহ্যান্সমেন্ট প্লাগিন

লাইন নাম্বার

কোড ব্লকে লাইন নাম্বার যোগ করুন:

javascript
const md = require('markdown-it')({
  highlight: function(str, lang) {
    // লাইন নাম্বার যোগ করুন
    return '<pre class="line-numbers"><code>' +
           md.utils.escapeHtml(str) +
           '</code></pre>';
  }
});

কোড টাইটেল

কোড ব্লকে টাইটেল যোগ করুন:

markdown
```js:example.js
console.log("Hello");

### কপি বাটন

ক্লিপবোর্ডে কপি করার ফাংশনালিটি যোগ করুন:

```javascript
document.querySelectorAll('pre code').forEach((block) => {
  const button = document.createElement('button');
  button.innerText = 'Copy';
  button.onclick = () => {
    navigator.clipboard.writeText(block.innerText);
  };
  block.parentNode.appendChild(button);
});

SEO এবং মেটাডেটা প্লাগিন

মেটা ট্যাগ

স্বয়ংক্রিয়ভাবে মেটা ট্যাগ তৈরি করুন:

javascript
const meta = require('remark-meta');

remark()
  .use(meta)
  .process(markdown, (err, file) => {
    console.log(file.data.meta);
  });

Open Graph

Open Graph ট্যাগ তৈরি করুন:

markdown
---
og:title: আমার আর্টিকেল
og:description: আর্টিকেল বিবরণ
og:image: /image.jpg
---

রিডিং টাইম

রিডিং টাইম গণনা করুন:

javascript
const readingTime = require('reading-time');

const stats = readingTime(markdownContent);
console.log(stats.text); // "5 min read"

ট্রান্সফরমেশন প্লাগিন

অটো-লিঙ্কিং

URL গুলিকে স্বয়ংক্রিয়ভাবে লিঙ্কে রূপান্তর করুন:

markdown
আরও তথ্যের জন্য https://example.com দেখুন।

হয়ে যাবে:
আরও তথ্যের জন্য [https://example.com](https://example.com) দেখুন।

প্লাগিন: markdown-it-linkify, remark-autolink-headings

ইমেজ অপ্টিমাইজেশন

ইমেজ অপ্টিমাইজ এবং লেজি-লোড করুন:

javascript
const imagePlugin = require('remark-images');

remark()
  .use(imagePlugin, {
    maxWidth: 1200,
    quality: 80,
    withWebp: true,
    lazy: true
  })
  .process(markdown);

সংক্ষিপ্ত রূপ

সংক্ষিপ্ত রূপ সাপোর্ট যোগ করুন:

markdown
HTML স্পেসিফিকেশনটি W3C দ্বারা রক্ষণাবেক্ষণ করা হয়।

*[HTML]: Hyper Text Markup Language
*[W3C]: World Wide Web Consortium

প্লাগিন: markdown-it-abbr

ইন্টিগ্রেশন প্লাগিন

React/MDX

মার্কডাউনে React কম্পোনেন্ট ব্যবহার করুন:

mdx
import { Chart } from './Chart'

# আমার ডকুমেন্ট

<Chart data={myData} />

Vue

Vue কম্পোনেন্ট ব্যবহার করুন:

markdown
<template>
  <MyComponent :data="data" />
</template>

Svelte

Svelte এর সাথে ইন্টিগ্রেট করুন:

markdown
<script>
  import Component from './Component.svelte';
</script>

<Component />

কাস্টম প্লাগিন তৈরি

Markdown-it প্লাগিন

javascript
function myPlugin(md, options) {
  // মূল নিয়ম সংরক্ষণ করুন
  const defaultRender = md.renderer.rules.link_open ||
    function(tokens, idx, options, env, self) {
      return self.renderToken(tokens, idx, options);
    };

  md.renderer.rules.link_open = function(tokens, idx, options, env, self) {
    // বাহ্যিক লিঙ্কে target="_blank" যোগ করুন
    const hrefIndex = tokens[idx].attrIndex('href');
    if (hrefIndex >= 0) {
      const href = tokens[idx].attrs[hrefIndex][1];
      if (href.startsWith('http')) {
        tokens[idx].attrPush(['target', '_blank']);
        tokens[idx].attrPush(['rel', 'noopener noreferrer']);
      }
    }

    return defaultRender(tokens, idx, options, env, self);
  };
}

module.exports = myPlugin;

Remark প্লাগিন

javascript
const visit = require('unist-util-visit');

function remarkPlugin() {
  return (tree) => {
    visit(tree, 'link', (node) => {
      // লিঙ্ক নোড পরিবর্তন করুন
      if (node.url.startsWith('http')) {
        node.data = node.data || {};
        node.data.hProperties = node.data.hProperties || {};
        node.data.hProperties.target = '_blank';
        node.data.hProperties.rel = 'noopener noreferrer';
      }
    });
  };
}

module.exports = remarkPlugin;

প্লাগিন কনফিগারেশন

বেসিক কনফিগারেশন

javascript
const md = require('markdown-it')({
  html: true,         // HTML ট্যাগ সক্ষম করুন
  linkify: true,      // URL স্বয়ংক্রিয় রূপান্তর
  typographer: true,  // স্মার্ট কোট
  breaks: false       // \n কে <br> তে রূপান্তর করবেন না
});

প্লাগিন অপশন

javascript
md.use(require('markdown-it-container'), 'warning', {
  validate: function(params) {
    return params.trim().match(/^warning\s+(.*)$/);
  },
  render: function(tokens, idx) {
    if (tokens[idx].nesting === 1) {
      return '<div class="warning">\n';
    } else {
      return '</div>\n';
    }
  }
});

সেরা অনুশীলন

  1. বুদ্ধিমানের মতো চয়ন করুন: শুধুমাত্র প্রয়োজনীয় প্লাগিন ব্যবহার করুন
  2. পারফরম্যান্স পরীক্ষা করুন: বিল্ড টাইমে প্লাগিন প্রভাব প্রোফাইল করুন
  3. নিয়মিত আপডেট করুন: প্লাগিন আপ টু ডেট রাখুন
  4. পুঙ্খানুপুঙ্খভাবে পরীক্ষা করুন: বিভিন্ন মার্কডাউন ইনপুটের সাথে পরীক্ষা করুন
  5. ব্যবহার ডকুমেন্ট করুন: সক্ষম প্লাগিন এবং তাদের কনফিগারেশন ডকুমেন্ট করুন
  6. ভার্সন লক: প্রোডাকশনে সঠিক ভার্সন ব্যবহার করুন
  7. নিরাপত্তা: নিরাপত্তা সমস্যার জন্য প্লাগিন পরীক্ষা করুন

জনপ্রিয় প্লাগিন ইকোসিস্টেম

Markdown-it প্লাগিন

  • markdown-it-footnote: ফুটনোট সাপোর্ট
  • markdown-it-abbr: সংক্ষিপ্ত রূপ সংজ্ঞা
  • markdown-it-emoji: ইমোজি শর্টকাট
  • markdown-it-sub/sup: সাবস্ক্রিপ্ট এবং সুপারস্ক্রিপ্ট
  • markdown-it-mark: হাইলাইট করা টেক্সট
  • markdown-it-ins: সন্নিবেশিত টেক্সট
  • markdown-it-container: কাস্টম কন্টেইনার

Remark প্লাগিন

  • remark-gfm: GitHub Flavored Markdown
  • remark-toc: বিষয়বস্তু সূচি
  • remark-math: গাণিতিক সমীকরণ সাপোর্ট
  • remark-html: HTML এ রূপান্তর
  • remark-rehype: HTML AST এ রূপান্তর
  • remark-frontmatter: ফ্রন্টম্যাটার পার্স

Unified ইকোসিস্টেম

javascript
const unified = require('unified');
const markdown = require('remark-parse');
const remark2rehype = require('remark-rehype');
const html = require('rehype-stringify');
const highlight = require('rehype-highlight');

unified()
  .use(markdown)
  .use(remark2rehype)
  .use(highlight)
  .use(html)
  .process(markdownContent);

ট্রাবলশুটিং

প্লাগিন কনফ্লিক্ট

javascript
// প্লাগিন অর্ডার পরীক্ষা করুন
md.use(plugin1)  // অর্ডার গুরুত্বপূর্ণ!
  .use(plugin2);

// কিছু প্লাগিন কনফ্লিক্ট হতে পারে
// সামঞ্জস্যের জন্য ডকুমেন্টেশন পরীক্ষা করুন

পারফরম্যান্স সমস্যা

javascript
// প্লাগিন প্রোফাইল করুন
console.time('markdown-render');
const result = md.render(content);
console.timeEnd('markdown-render');

ডিবাগিং

javascript
// ডিবাগ মোড সক্ষম করুন
const md = require('markdown-it')({
  debug: true
});

// টোকেন লগ করুন
const tokens = md.parse(content);
console.log(JSON.stringify(tokens, null, 2));

উপসংহার

প্লাগিন এবং এক্সটেনশন মার্কডাউনকে অত্যন্ত বহুমুখী করে তোলে। আপনার প্রয়োজনের জন্য নিখুঁত লেখা এবং প্রকাশনার ওয়ার্কফ্লো তৈরি করতে সঠিক প্লাগিনের সংমিশ্রণ চয়ন করুন।

অতিরিক্ত রিসোর্স

www.markdownlang.com দ্বারা নির্মিত