ডকুমেন্ট সংস্করণ ব্যবস্থাপনা

SveltePress সর্বশেষ ডকুমেন্টেশনকে স্বাভাবিক URL-এ রেখে /v/8.1/-এর মতো পথে অপরিবর্তনীয় পুরোনো snapshot প্রকাশ করতে পারে। এটি opt-in; sveltepress.versions.json না থাকলে সাইট আগের মতোই কাজ করে।

ইনস্টল ও শুরু

pnpm add -D @sveltepress/cli
pnpm exec sveltepress versions init --current 8.1 --label "8.1"
sh

Vite plugin স্বয়ংক্রিয়ভাবে manifest খুঁজে পায়। sveltepress({ versions: false }) দিয়ে এটি বন্ধ করা যায়, অথবা sveltepress({ versions: { manifest: 'path/to/versions.json' } }) দিয়ে অন্য manifest বেছে নেওয়া যায়।

Release snapshot তৈরি

নতুন current version সরাসরি তৈরি করুন। CLI নিজেই সাইটের Vite ও Default Theme configuration resolve করে, তাই আগাম build ছাড়াই active sidebar freeze হয়:

pnpm exec sveltepress versions create 8.2 --label "8.2"
pnpm exec sveltepress versions validate
sh

create নির্বাচিত route source src/routes/v/8.1/-এ কপি করে, route ও sidebar metadata freeze করে, 8.1-কে history-তে রাখে এবং 8.2-কে current করে। Duplicate ID, symbolic link, dirty Git worktree এবং frozen boundary-এর বাইরের dependency প্রত্যাখ্যাত হয়। Uncommitted state-ই release source হলে শুধু তখন --allow-dirty ব্যবহার করুন। ব্যর্থ preflight কোনো অসম্পূর্ণ snapshot বা manifest পরিবর্তন রেখে যায় না।

versions list সব version দেখায় এবং versions validate missing বা orphan snapshot directory পরীক্ষা করে।

Manifest-এর মূল ক্ষেত্র

{
  "$schema": "./node_modules/@sveltepress/cli/schema/versions.schema.json",
  "basePath": "/v",
  "current": { "id": "8.2", "label": "8.2" },
  "versions": [
    {
      "id": "8.1",
      "label": "8.1",
      "status": "deprecated",
      "sourceRef": "v8.1.0",
      "search": { "facetFilters": ["version:8.1"] }
    }
  ],
  "content": {
    "include": ["**"],
    "exclude": ["internal/**"],
    "shared": ["$lib/**", "static/**"]
  }
}
json

Version ID URL-safe lowercase হতে হবে; dot ও hyphen ব্যবহার করা যায়। includeexclude কোন route file freeze হবে তা ঠিক করে। shared ইচ্ছাকৃত live dependency ঘোষণা করে; তালিকাটি ছোট রাখুন, কারণ ভবিষ্যৎ পরিবর্তন সব historical version-এ প্রভাব ফেলতে পারে।

status-এ deprecated বা eol দিলে navigation-এর উপরে একটি স্পষ্ট site-wide পুরোনো-version banner দেখা যায়। এটি পুরোনো site-এর কিছু feature কাজ নাও করতে পারে বলে জানায় এবং একই logical page-এর current version-এ link দেয়। sourceRef historical edit link-কে সংশ্লিষ্ট Git ref-এ পাঠায়; editLink: false দিয়ে link লুকানো যায়। EOL version ডিফল্টভাবে noindex পায়।

Navigation, search ও output

Default Theme নিজে থেকেই keyboard-accessible version selector যোগ করে। Historical internal link ও frozen sidebar একই version-এ থাকে। Version বদলালে একই logical page রাখা হয়; page না থাকলে সেই version-এর home page খুলে একটি notice দেখায়।

Historical search স্পষ্ট search configuration ছাড়া বন্ধ থাকে। Custom search component selected version ও metadata পায়; DocSearch configured facet filter ব্যবহার করে। এতে current result-কে ভুলভাবে historical result হিসেবে দেখানো হয় না।

Build প্রতিটি page-এর canonical, version-aware sitemap.xml, এবং /v/{id}/llms.txt তৈরি করে; root LLM file শুধু current docs রাখে। PWA historical HTML precache করে না এবং historical page-এর জন্য network-first strategy ব্যবহার করে। Custom theme virtual:sveltepress/versions থেকে manifest ও path resolver নিতে পারে।

Browser code-এ package থেকে এই resolver-গুলো সরাসরি import করলে @sveltepress/vite/versioning/runtime ব্যবহার করুন; এই entry-তে Node file-system code নেই। Build ও configuration code-এ @sveltepress/vite/versioning ব্যবহার করা যাবে।

Snapshot directory release artifact হিসেবে review ও commit করুন, হাতে edit করবেন না। Current route সংশোধন করে পরের snapshot তৈরি করুন।

Current version-এ কী নতুন তা বর্ণনা করুন

SveltePress manifest-এর ক্রম অনুযায়ী current route inventory-কে সর্বশেষ historical version-এর সঙ্গে তুলনা করে। শুধু current version-এ থাকা route নতুন page হিসেবে তালিকাভুক্ত হয়। Summary যোগ করতে বা change catalog থেকে page বাদ দিতে frontmatter ব্যবহার করুন:

---
title: নতুন কী
versionChanges:
  exclude: true
  summary: ঐচ্ছিক page summary
---
yaml

আগের Markdown page-এ গুরুত্বপূর্ণ নতুন section স্পষ্টভাবে চিহ্নিত করুন। Version, title এবং page-এর মধ্যে unique stable ID—তিনটিই আবশ্যক:

:::since[Hot reload configuration]{version="8.2" id="hot-reload" summary="Restart লাগে না"}
নতুন documentation content।
:::
md

Unknown version, duplicate ID, unknown field বা ভুল type development server ও production build বন্ধ করে দেয়। নতুন page কেবল New pages group-এ যায়; তার since section আবার Updated pages-এ আসে না। প্রথম managed version-এর কোনো baseline নেই এবং পুরো site-কে নতুন ধরা হয় না।

Default Theme page ও section badge শুধু সেই version-এ দেখায় যেখানে content প্রথম এসেছে। Site নিজের পছন্দের route-এ overview component রাখতে পারে:

Sidebar নতুন ও updated page-এর পাশে compact New badge দেখায়। On this page কেবল :::since দিয়ে স্পষ্টভাবে চিহ্নিত section-এ একই badge দেখায়। Compact text বদলাতে i18n.versionNavigationNewLabel ব্যবহার করুন।

src/routes/whats-new/+page.svelte
<script>
  import  from '@sveltepress/theme-default/VersionChanges.svelte'
</script>

< />
svelte

এই site-এর route উদাহরণ নতুন কী page -এ দেখা যাবে।

Component current version দিয়ে শুরু করে এবং historical selection-এর জন্য ?version={id} ব্যবহার করে। Current link unprefixed থাকে; historical link /v/{id}/... ও নির্দিষ্ট section anchor-এ যায়।

Custom theme একই frozen data পড়তে পারে:

import { ,  } from 'virtual:sveltepress/versions'

const  = ()
const  = ('8.1')
ts

versions create outgoing current change set-কে .sveltepress-version.json-এ freeze করে। Historical change পরের current docs থেকে পুনরায় হিসাব হয় না; versions validate marker, version reference, unique anchor এবং snapshot drift পরীক্ষা করে।

Last update at: 2026/08/28 13:08