• صفحه اصلی
  • مهارت‌ها
  • پروژه‌ها
  • بلاگ
  • مشاوره
  • تماس با من
مشاورهرزومه
Naser Rasouli

نویسنده

Naser Rasouli

توسعه‌دهنده فرانت‌اند؛ اینجا تجربه‌ها و یادداشت‌های واقعی‌ام از پروژه‌ها را می‌نویسم.

GitHubLinkedIn

آخرین نوشته‌ها

متدولوژی BEM در CSS: نام‌گذاری استاندارد برای کدهای تمیز
2026-02-18•1 دقیقه مطالعه

متدولوژی BEM در CSS: نام‌گذاری استاندارد برای کدهای تمیز

راهنمای عملی BEM برای جلوگیری از تداخل استایل، ساختاردهی کلاس‌ها و نگهداری ساده‌تر CSS.

بررسی نحوه به‌روزرسانی state در React
2026-02-11•1 دقیقه مطالعه

بررسی نحوه به‌روزرسانی state در React

setState بلافاصله state را عوض نمی‌کند؛ همین باعث می‌شود console.log مقدار قبلی را لاگ کند. این راهنما توضیح می‌دهد چرا و چطور مقدار جدید را درست دریافت کنیم.

تابع Cleanup در useEffect: از باگ‌های پنهان تا الگوهای درست
2026-02-04•1 دقیقه مطالعه

تابع Cleanup در useEffect: از باگ‌های پنهان تا الگوهای درست

راهنمای عملی نوشتن cleanup در useEffect تا از memory leak، لیسنرهای تکراری و setState روی کامپوننت unmounted جلوگیری کنید.

Conventional Commits: پیام‌های بهتر برای Git

Conventional Commits: پیام‌های بهتر برای Git

2025-12-12
gitconventional-commitschangelogautomation

چرا ساختار پیام کامیت مهم است

هر تغییری که می‌زنید وارد تاریخچهٔ Git می‌شود. وقتی پیام‌ها بی‌قاعده باشند، زمینه از دست می‌رود، ساخت چنج‌لاگ دستی می‌شود، CI/CD نمی‌تواند منظور را تشخیص دهد و هم‌تیمی‌ها هم سخت‌تر دنبال می‌کنند. Conventional Commits با یک فرمت سبک و قابل‌پردازش این مشکل را حل می‌کند تا تاریخچه هم برای انسان و هم برای ابزارها قابل خواندن باشد.

Conventional Commits چیست؟

Conventional Commits یک مشخصات ساده برای ساختاربندی پیام‌های کامیت است. این الگو پیام‌ها را قابل پیش‌بینی می‌کند تا بتوانید چنج‌لاگ، نسخه‌گذاری معنایی و پایپ‌لاین‌های انتشار را خودکار کنید.

ساختار پیام کامیت

<type>(scope): <short description>
[body]
[footer]

اجزا

  • type (اجباری): نوع تغییر (feat، fix، docs و غیره)
  • scope (اختیاری): بخش تحت تأثیر، مثل auth، cart، api
  • description (اجباری): خلاصهٔ کوتاه آنچه تغییر کرده
  • body (اختیاری): توضیحات بیشتر، دلیل یا جزئیات پیاده‌سازی
  • footer (اختیاری): رفرنس‌ها و تغییرات شکننده (مثلاً BREAKING CHANGE: یا Closes #123)

انواع رایج

Type Purpose
feat افزودن یک قابلیت جدید
fix رفع باگ
docs تغییرات صرفاً مستندات
style تغییرات فرمت/فاصله/استایل بدون منطق جدید
refactor تغییر ساختار کد بدون افزودن قابلیت یا رفع باگ
test اضافه/به‌روزرسانی تست‌ها
chore کارهای متفرقه (ابزارهای build، تنظیمات و مشابه)

مثال‌های واقعی

فرمت را یکدست استفاده کنید تا ابزارها و هم‌تیمی‌ها سریعاً منظور را بفهمند:

  • قابلیت جدید
    feat(cart): add quantity selector to cart items
    
  • رفع باگ
    fix(auth): resolve issue with token refresh on expiration
    
  • به‌روزرسانی مستندات
    docs(readme): update usage example for CLI
    
  • تغییر استایل
    style(ui): reformat buttons and inputs using Tailwind
    
  • ریفکتور
    refactor(api): simplify data fetch logic in product service
    
  • تغییر شکننده
    feat!: drop support for Node.js v12
    

جمع‌بندی

Conventional Commits تاریخچهٔ Git را ساخت‌یافته، قابل جست‌وجو و آمادهٔ اتوماسیون نگه می‌دارد. وقتی کل تیم از این فرمت پیروی کند، انتشارها تمیزتر، چنج‌لاگ‌ها دقیق‌تر و ریویوها سریع‌تر می‌شود.