Astro 7 ರಸ್ಟ್ (Rust) ಆಧಾರಿತ Sätteri markdown ಇಂಜಿನ್‌ಗೆ ಬದಲಾಯಿಸಿರುವುದು display-math ಬ್ಲಾಕ್‌ಗಳನ್ನು ಸಾಮಾನ್ಯ ಕೋಡ್ ಆಗಿ ಪರಿವರ್ತಿಸುತ್ತಿದೆ, heading anchors ಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತಿದೆ ಮತ್ತು custom markdown ಆಯ್ಕೆಗಳನ್ನು ಕೈಬಿಡುತ್ತಿದೆ – ಇದು ಅಪ್‌ಗ್ರೇಡ್ ಮಾಡಿದ ನಂತರ ತಮ್ಮ ಸೈಟ್‌ನಲ್ಲಿ ಹಾನಿಗೊಳಗಾದ ಸಮೀಕರಣಗಳನ್ನು (equations) ನೋಡುವ ಯಾರಿಗಾದರೂ ದೊಡ್ಡ ತೊಂದರೆಯಾಗಿದೆ.

ನೀವು LaTeX-ಶೈಲಿಯ ಗಣಿತ (math), ಸ್ವಯಂಚಾಲಿತ heading ಲಿಂಕ್‌ಗಳು ಅಥವಾ ವಿಶೇಷ (bespoke) markdown ಪ್ಲಗಿನ್‌ಗಳನ್ನು ಅವಲಂಬಿಸಿದ್ದರೆ, ಈ ಅಪ್‌ಗ್ರೇಡ್ ನಿಮ್ಮ ವಿಷಯವನ್ನು (content) ಓದಲು ಅಸಾಧ್ಯವಾಗಿಸಬಹುದು ಮತ್ತು ನಿಮ್ಮ ನ್ಯಾವಿಗೇಷನ್ ಅನ್ನು ಬಳಕೆಗೆ ಬಾರದಂತೆ ಮಾಡಬಹುದು, ಆದ್ದರಿಂದ ಇದನ್ನು ಶೀಘ್ರವಾಗಿ ಸರಿಪಡಿಸುವುದು ಅತ್ಯಗತ್ಯ.

ಅಪ್‌ಗ್ರೇಡ್ ಏಕೆ ಎಲ್ಲವನ್ನೂ ಹಾಳುಮಾಡಿತು

Astro ಈಗ ತನ್ನ ಕೋರ್ Markdown ಪ್ರೊಸೆಸರ್ ಆಗಿ Sätteri ಅನ್ನು ಬಳಸುತ್ತಿದೆ. Sätteri ಪ್ಲಗಿನ್‌ಗಳನ್ನು ಅನ್ವಯಿಸುವ ಕ್ರಮವನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ: ನೀವು ಕಾನ್ಫಿಗರ್ ಮಾಡಿರಬಹುದಾದ HTML-AST (HAST) ಪ್ಲಗಿನ್‌ಗಳಿಗಿಂತ ಮೊದಲು ಇದು syntax highlighting ಅನ್ನು ರನ್ ಮಾಡುತ್ತದೆ. ಈ ಬದಲಾವಣೆಯಿಂದಾಗಿ ಮೂರು ಸಾಮಾನ್ಯ ಮಾದರಿಗಳು ಕೆಲಸ ಮಾಡುವುದನ್ನು ನಿಲ್ಲಿಸುತ್ತವೆ:

  • Display math$$ … $$ ಮೂಲಕ ಗುರುತಿಸಲಾದ ಬ್ಲಾಕ್‌ಗಳನ್ನು ಸಾಮಾನ್ಯ ಕೋಡ್ ಎಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ ಏಕೆಂದರೆ highlighter ಮೊದಲು ರನ್ ಆಗುತ್ತದೆ.
  • Heading anchors – slugs (URL-ಸ್ನೇಹದ IDಗಳು) ಅನ್ನು ರಚಿಸುವ ಮತ್ತು ನಂತರ ಆ heading ಗಳನ್ನು autolink ಮಾಡುವ ಪ್ಲಗಿನ್‌ಗಳು ಈಗ IDಗಳನ್ನು ನೋಡಲಾರವು, ಆದ್ದರಿಂದ ಲಿಂಕ್‌ಗಳು ಎಂದಿಗೂ ಸೃಷ್ಟಿಯಾಗುವುದಿಲ್ಲ.
  • Custom options – ನೀವು Sätteri ಪ್ರೊಸೆಸರ್‌ನೊಳಗೆ ನೇರವಾಗಿ ನೀಡಿದ ಯಾವುದೇ ಹೆಚ್ಚುವರಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ನಿರ್ಲಕ್ಷಿಸಲಾಗುತ್ತದೆ; Astro ಕೇವಲ ಮೂರು ಪೂರ್ವನಿರ್ಧರಿತ ಫೀಲ್ಡ್‌ಗಳನ್ನು ಮಾತ್ರ ಮುಂದಕ್ಕೆ ಕಳುಹಿಸುತ್ತದೆ.

ನಿರ್ದಿಷ್ಟ ಪರಿಹಾರಗಳು

1. HTML-AST ಬದಲಿಗೆ markdown-AST (MDAST) ನಲ್ಲಿ ಗಣಿತವನ್ನು (math) ರেন্ডರ್ ಮಾಡಿ

Astro ನ markdown ಪೈಪ್‌ಲೈನ್‌ನಲ್ಲಿ ಎರಡು ಪ್ಲಗಿನ್ ಸ್ಲಾಟ್‌ಗಳಿವೆ:

  • mdastPlugins – ಇದು HTML ಆಗುವ ಮೊದಲು ಪಾರ್ಸ್ ಮಾಡಿದ markdown ಟ್ರೀ ಮೇಲೆ ರನ್ ಆಗುತ್ತದೆ.
  • hastPlugins – ಇದು ಪರಿವರ್ತನೆಯ ನಂತರ HTML ಟ್ರೀ ಮೇಲೆ ರನ್ ಆಗುತ್ತದೆ.

ಹೈಲೈಟರ್ hastPlugins ಗಿಂತ ಮೊದಲು ರನ್ ಆಗುವುದರಿಂದ, ಗಣಿತವು ಕೋಡ್ ಬ್ಲಾಕ್ ಆಗಿ ಬದಲಾಗುತ್ತದೆ. ನಿಮ್ಮ math ಪ್ಲಗಿನ್ ಅನ್ನು mdastPlugins ಗೆ ವರ್ಗಾಯಿಸಿ.

export default {
  markdown: {
    mdastPlugins: [
      // put remark-math (or your custom math handler) here
    ],
    // leave hastPlugins for things that truly need HTML nodes
  }
}

ಸಾಮಾನ್ಯ ಸೆಟಪ್‌ಗಳು slug ಜನರೇಟರ್ ಅನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿ, ನಂತರ autolink ಪ್ಲಗಿನ್ ಅನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡುತ್ತವೆ. Astro ನಲ್ಲಿ, ಅಂತರ್ನಿರ್ಮಿತ (built-in) heading-ID ಪ್ಲಗಿನ್ ನಿಮ್ಮ ಪಟ್ಟಿಯ ನಂತರ ರನ್ ಆಗುತ್ತದೆ, ಇದರಿಂದ autolink ಪ್ಲಗಿನ್‌ಗೆ ಅಂಟಿಸಲು ಏನೂ ಉಳಿಯುವುದಿಲ್ಲ. ಪಟ್ಟಿಯಲ್ಲಿ ಮೊದಲು slug ಪ್ಲಗಿನ್ ಅನ್ನು, ನಂತರ autolink ಪ್ಲಗಿನ್ ಅನ್ನು ಇರಿಸಿ.

export default {
  markdown: {
    mdastPlugins: [
      satteriSlug(),            // must be first
      satteriAutolinkHeadings() // runs after slug, sees IDs
    ]
  }
}

ಈಗ ಪ್ರತಿ heading ಒಂದು ID ಅನ್ನು ಪಡೆಯುತ್ತದೆ ಮತ್ತು autolink ಪ್ಲಗಿನ್ ಅದನ್ನು ಸೂಕ್ತ anchor ಮೂಲಕ ಸುತ್ತಬಹುದು.

3. ಹೆಚ್ಚುವರಿ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು Astro markdown ಆಬ್ಜೆಕ್ಟ್‌ನ ಟಾಪ್ ಮಟ್ಟದಲ್ಲಿ ಇರಿಸಿ

Astro ಕೇವಲ ಮೂರು ನಿರ್ದಿಷ್ಟ ಫೀಲ್ಡ್‌ಗಳನ್ನು Sätteri ಪ್ರೊಸೆಸರ್‌ನಿಗೆ ಕಳುಹಿಸುತ್ತದೆ. ನೀವು ಪ್ರೊಸೆಸರ್‌ನೊಳಗೆ ಯಾವುದನ್ನಾದರೂ ನೆಸ್ಟ್ ಮಾಡಿದರೆ (ಉದಾಹರಣೆಗೆ shikiConfig ಆಬ್ಜೆಕ್ಟ್), ಅದು ಕೈಬಿಡಲ್ಪಡುತ್ತದೆ. ಆ ಹೆಚ್ಚುವರಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು markdown ಕಾನ್ಫಿಗರೇಶನ್‌ನ ಟಾಪ್ ಮಟ್ಟಕ್ಕೆ ವರ್ಗಾಯಿಸಿ.

export default {
  markdown: {
    shikiConfig: { theme: 'nord' }, // top-level, will be respected
    // other Astro-accepted fields …
    mdastPlugins: [/* … */],
    hastPlugins: [/* … */]
  }
}

ಸಾಮಾನ್ಯ remark ಪ್ಲಗಿನ್‌ಗಳಿಗಾಗಿ ತ್ವರಿತ ಬದಲಾವಣೆ ಮಾರ್ಗದರ್ಶಿ

ಹಳೆಯ remark ಪ್ಲಗಿನ್ ಹೊಸ Astro feature flag
remark-gfm features.gfm
remark-frontmatter features.frontmatter
remark-math features.math
remark-directive features.directive
remark-smartypants features.smartPunctuation
remark-wiki-link features.wikilinks

ನಿಮ್ಮ Astro ಕಾನ್ಫಿಗರೇಶನ್‌ನಲ್ಲಿ ಪ್ಲಗಿನ್ ಹೆಸರನ್ನು ಅದಕ್ಕೆ ಸಂಬಂಧಿಸಿದ features.* ಫ್ಲಾಗ್‌ಗೆ ಬದಲಾಯಿಸಿ.

ಪ್ಲಗಿನ್‌ಗಳನ್ನು Sätteri ಗೆ ಪೋರ್ಟ್ ಮಾಡುವಾಗ ಅನುಸರಿಸಬೇಕಾದ ಉತ್ತಮ ಪದ್ಧತಿಗಳು

  • Factory pattern – ಪುಟಗಳ ನಡುವೆ ಸ್ಟೇಟ್ ಸೋರಿಕೆಯನ್ನು (state leaking) ತಪ್ಪಿಸಲು ಪ್ರತಿ ಡಾಕ್ಯುಮೆಂಟ್‌ಗೆ ಹೊಸ ಪ್ಲಗಿನ್ ಇನ್‌ಸ್ಟೆನ್ಸ್ ಅನ್ನು ರಚಿಸಿ.
  • Immutable nodes – ಯಾವುದೇ ನೋಡ್ ಅನ್ನು ನೇರವಾಗಿ ಬದಲಾಯಿಸಬೇಡಿ (mutate); ಪ್ರೊಸೆಸರ್ ಬದಲಾವಣೆಗಳನ್ನು ಸರಿಯಾಗಿ ಟ್ರ್ಯಾಕ್ ಮಾಡಲು ಹೊಸ ನೋಡ್ ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸಿ.
  • Insert helpers – ಟ್ರೀ ಅನ್ನು ಮ್ಯಾನುಯಲ್ ಆಗಿ ಸ್ಪ್ಲೈಸ್ ಮಾಡುವ ಬದಲು, ನೀವು sibling ನೋಡ್‌ಗಳನ್ನು ಸೇರಿಸಬೇಕಾದಾಗ ctx.insertBefore ಅಥವಾ ctx.insertAfter ಬಳಸಿ.

ಈ ನಿಯಮಗಳನ್ನು ಅನುಸರಿಸುವುದರಿಂದ ಪ್ರೊಸೆಸರ್ ಸ್ಥಿರವಾಗಿರುತ್ತದೆ ಮತ್ತು ಪತ್ತೆಹಚ್ಚಲು ಕಷ್ಟವಾದ ಬಗ್‌ಗಳನ್ನು ತಡೆಯುತ್ತದೆ.

ಮುಂದೆ ಗಮನಿಸಬೇಕಾದವು

Astro ನ ಡಾಕ್ಯುಮೆಂಟೇಶನ್ ಇನ್ನೂ ಹಳೆಯ ಪ್ಲಗಿನ್ ಕ್ರಮವನ್ನು ಡಿಫಾಲ್ಟ್ ಆಗಿ ಪಟ್ಟಿ ಮಾಡಿದೆ, ಆದ್ದರಿಂದ ಹೊಸ ಪ್ರಾಜೆಕ್ಟ್‌ಗಳು ಅರಿಯದೆಯೇ ಈ ದೋಷಪೂರಿತ ವರ್ತನೆಯನ್ನು ಹೊಂದಿರಬಹುದು. ಇಂಟರ್ನಲ್ heading-ID ಪ್ಲಗಿನ್ ಅನ್ನು ಮರುಕ್ರಮಗೊಳಿಸುವ ಸಂಭವನೀಯ ಬಿಲ್ಟ್-ಇನ್ ಫಿಕ್ಸ್ ಗಾಗಿ ಮುಂಬರುವ Astro ಬಿಡುಗಡೆಗಳನ್ನು ಗಮನಿಸುತ್ತಿರಿ. ಅಲ್ಲಿಯವರೆಗೆ, Astro 7 ಗೆ ಬದಲಾದ ನಂತರ math rendering, heading anchors ಮತ್ತು custom markdown ಆಯ್ಕೆಗಳನ್ನು ಮರುಸ್ಥಾಪಿಸಲು ಮೇಲಿನ ಹಂತಗಳು ಮಾತ್ರ ವಿಶ್ವಾಸಾರ್ಹ ಮಾರ್ಗಗಳಾಗಿವೆ.

ಸಾರಾಂಶ: Astro 7 ರ Sätteri ಇಂಜಿನ್‌ಗೆ ಬದಲಾಯಿಸುವಾಗ math ಹ್ಯಾಂಡ್ಲಿಂಗ್ ಅನ್ನು mdastPlugins ಗೆ ವರ್ಗಾಯಿಸುವುದು, autolinks ಗಿಂತ ಮೊದಲು slug ಪ್ಲಗಿನ್ ಅನ್ನು ಇರಿಸುವುದು ಮತ್ತು ಯಾವುದೇ ಹೆಚ್ಚುವರಿ markdown ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಪ್ರೊಸೆಸರ್ ಆಬ್ಜೆಕ್ಟ್‌ನಿಂದ ಹೊರಗೆ ತೆಗೆಯುವುದು ಅಗತ್ಯವಾಗಿದೆ; ಈ ಮೂರು ಹೊಂದಾಣಿಕೆಗಳನ್ನು ಮಾಡಿದ ನಂತರ, ನಿಮ್ಮ ಸೈಟ್‌ನ ಸಮೀಕರಣಗಳು, ನ್ಯಾವಿಗೇಷನ್ ಲಿಂಕ್‌ಗಳು ಮತ್ತು ಕಸ್ಟಮ್ markdown ವೈಶಿಷ್ಟ್ಯಗಳು ಮೊದಲಿನಂತೆಯೇ ಕೆಲಸ ಮಾಡುತ್ತವೆ.