প্রকল্প সম্পর্কে
Marigold হলো Marigold Design System-এর একটি React ইমপ্লিমেন্টেশন, যা অ্যাক্সেসিবল আচরণের জন্য react-aria এবং স্টাইলিংয়ের জন্য Tailwind CSS-এর ওপর ভিত্তি করে তৈরি। এই রিপোজিটরিটি একটি মনোরিপো যা কম্পোনেন্ট লাইব্রেরি, থিমিং, ডকুমেন্টেশন এবং টেস্টিংকে এক জায়গায় অন্তর্ভুক্ত করে।
রিপোজিটরিটিতে যা যা রয়েছে
- কম্পোনেন্ট এবং সিস্টেম সোর্স ফোল্ডার, যা প্যাকেজ হিসেবে তৈরি করা হয়েছে; CLI কমান্ডগুলো "components and theme packages"-কে বিল্ড টার্গেট হিসেবে নির্দেশ করে এবং প্রকাশিত npm প্যাকেজটি হলো `@marigold/components`।
- থিম প্যাকেজ, যা একটি ডেডিকেটেড `pnpm build:themes` টাস্কের মাধ্যমে তৈরি করা হয়, যাতে একটি একক কম্পোনেন্ট সেট বিভিন্ন থিম আউটপুটের সাথে যুক্ত করা যায়।
- Next.js দিয়ে তৈরি একটি ডকুমেন্টেশন অ্যাপ, যা ডেভ মোডে `pnpm dev` (localhost:3000) এবং প্রোডাকশন মোডে `pnpm start` দিয়ে চালানো হয়। এতে `pnpm build:component-props` এবং একটি "registry" টাস্কের মাধ্যমে জেনারেটেড কম্পোনেন্ট প্রপ টেবিল অন্তর্ভুক্ত রয়েছে।
- একটি Storybook ওয়ার্কস্পেস যা localhost:6006-এ `pnpm sb` দিয়ে শুরু হয়, সাথে Storybook-ভিত্তিক কম্পোনেন্ট টেস্ট (`pnpm test:sb`) এবং একটি Storybook বিল্ড টাস্ক রয়েছে।
টুলিং এবং কোয়ালিটি চেক
পুরো প্রজেক্টে TypeScript ব্যবহৃত হয়েছে, যেখানে `pnpm typecheck` প্রথমে ডকুমেন্টেশন বিল্ড করে এবং তারপর emit ছাড়াই টাইপ চেকিং চালায়। টেস্টগুলো Vitest-এ চালানো হয়, যার মধ্যে কভারেজ এবং একটি CI-ওরিয়েন্টেড ভেরিয়েন্ট অন্তর্ভুক্ত। লিন্টিং-এর কাজ ESLint (কোডের জন্য) এবং Vale (ডকুমেন্টেশনের গদ্যের জন্য)-এর মধ্যে বিভক্ত, এবং ফরম্যাটিং Prettier দ্বারা পরিচালিত হয় যার আলাদা চেক এবং ফিক্স কমান্ড রয়েছে। একটি `clean` কমান্ডের মাধ্যমে বিল্ড আর্টিফ্যাক্ট, ডিপেন্ডেন্সি এবং ক্যাশ যেমন dist, .next, .turbo, coverage এবং storybook-static মুছে ফেলা হয়।
রিলিজ
রিলিজগুলো লোকালি করা হয় না: main-এ প্রতিটি পুশ-এর সময় একটি GitHub Actions ওয়ার্কফ্লো Changesets অ্যাকশনটি চালায়। এটি হয় একটি "release: version packages" পুল রিকোয়েস্ট খোলে যা পেন্ডিং চেঞ্জসেটগুলো গ্রহণ করে, অথবা মার্জ হওয়ার পর আপডেটেড প্যাকেজগুলো npm-এ পাবলিশ করে। কন্ট্রিবিউটররা যখন কোনো পরিবর্তনের ফলে ভার্সন বাম্প করার প্রয়োজন হয়, তখন `pnpm changeset` দিয়ে একটি চেঞ্জসেট যোগ করেন। প্রি-রিলিজের জন্য `.changeset/pre.json`-এ রেকর্ড করা Changesets pre মোড ব্যবহৃত হয়; npm dist-tag এর tag ফিল্ড থেকে নেওয়া হয়, তাই `pnpm changeset pre enter rc` কমান্ডটি latest-এর পরিবর্তে "rc" ট্যাগে পাবলিশ করে। README-তে দুটি সতর্কবার্তা দেওয়া হয়েছে: প্রি-রিলিজ কাউন্টার ট্যাগের পরিবর্তে package.json-এর ভার্সনকে অনুসরণ করে, এবং চ্যানেল পরিবর্তন করলে আগের dist-tag তার শেষ ভার্সনে পিন হয়ে থাকে, তাই এটি প্রতিটি প্যাকেজ অনুযায়ী পুনরায় পয়েন্ট করতে হবে বা সরিয়ে ফেলতে হবে।
লোকালি শুরু করা
রিপোজিটরিটি ক্লোন করুন, pnpm দিয়ে ডিপেন্ডেন্সি ইনস্টল করুন এবং ডেভেলপমেন্ট, বিল্ড, টেস্ট, লিন্টিং, ফরম্যাটিং এবং টাইপ চেকিংয়ের জন্য ডকুমেন্ট করা কমান্ড টেবিলটি ব্যবহার করুন। README নতুন ব্যবহারকারীদের ইনস্টলেশন নির্দেশাবলীর জন্য Marigold ডকুমেন্টেশন সাইটে এবং সর্বশেষ পরিবর্তনের জন্য রিলিজ নোটস পেজে যাওয়ার পরামর্শ দেয়।
প্রজেক্টটি MIT লাইসেন্সের অধীনে প্রকাশিত। README-তে কম্পোনেন্টের সংখ্যা, পারফরম্যান্স বা অ্যাডপশন সম্পর্কে কোনো দাবি করা হয়নি; এই বিবরণগুলো ডকুমেন্টেশন সাইট এবং প্যাকেজ রেজিস্ট্রি থেকে যাচাই করতে হবে।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.