کدنامهمرجع‌های مهندسی نرم‌افزار، به فارسی

انتشار پکیج و مخزن‌سازی

Publishing packages & running registries

کدی که فقط در پروژهٔ خودت کار می‌کند، یک فایل است. کدی که دیگران با یک دستور نصبش می‌کنند، یک محصول است. فاصلهٔ این دو، چند قرارداد ساده اما سخت‌گیر است: نسخه‌گذاری، متادیتا، امضا و سازگاری. این مسیر همان فاصله را برای شش زیست‌بوم بزرگ می‌پیماید، و بعد نشان می‌دهد چطور مخزن خصوصی خودت را بالا بیاوری.

۱۸فصل
۲۹۱تمرین با پاسخ
≈ ۲۶ ساعتزمان تخمینی
۳پروژهٔ نهایی

پیشرفت تو

۰٪

درصد هر فصل از دو چیز می‌آید: چقدر از بخش‌هایش را خوانده‌ای (۵۵٪) و چند تمرینش را تیک زده‌ای (۴۵٪). همه‌چیز داخل مرورگر خودت می‌ماند.

فصل

فصل‌ها به هم وابسته‌اند و ترتیبشان معنا دارد. هر مسیر با پروژه‌های نهایی تمام می‌شود: ساده، متوسط، پیچیده.

۱

پکیج چیست و چرا

مرز میان «کد من» و «کدی که دیگران استفاده می‌کنند».

در نوبت نوشتن
۲

نسخه‌گذاری معنایی

‎major.minor.patch‎ یک قرارداد است، نه یک شماره.

در نوبت نوشتن
۳

‎npm‎: ساخت و انتشار

‎package.json‎، فایل‌های منتشرشده، و اولین ‎publish‎.

در نوبت نوشتن
۴

‎npm‎ پیشرفته

scope، بسته‌های خصوصی، ‎workspace‎ و ‎monorepo‎.

در نوبت نوشتن
۵

‎NuGet‎: ساخت و انتشار

‎csproj‎، متادیتا، ‎symbol package‎ و ‎nuget.org‎.

در نوبت نوشتن
۶

‎PyPI‎: ‎pyproject‎ و ‎wheel‎

بسته‌بندی مدرن پایتون، از ‎setup.py‎ تا ‎build‎.

در نوبت نوشتن
۷

‎Cargo‎ و ‎crates.io‎

انتشار crate و مستندسازی خودکار.

در نوبت نوشتن
۸

‎RubyGems‎

‎gemspec‎ و انتشار.

در نوبت نوشتن
۹

‎Go modules‎ و ‎Maven‎

دو مدل متفاوت: بدون رجیستری مرکزی، و با آن.

در نوبت نوشتن
۱۰

مخزن خصوصی با Nexus

یک سرور، چند فرمت: ‎npm‎، ‎NuGet‎، ‎PyPI‎ و ‎Maven‎.

در نوبت نوشتن
۱۱

گزینه‌های دیگر مخزن

Verdaccio، Artifactory و ‎GitHub Packages‎.

در نوبت نوشتن
۱۲

امنیت زنجیرهٔ تأمین

امضا، ‎provenance‎، ‎SBOM‎ و حملهٔ ‎typosquatting‎.

در نوبت نوشتن
۱۳

انتشار خودکار با ‎CI‎

انتشار روی تگ، بدون رمز روی لپ‌تاپ کسی.

در نوبت نوشتن
۱۴

مستندسازی و ‎CHANGELOG‎

‎README‎ای که سؤال اول را جواب بدهد.

در نوبت نوشتن
۱۵

نگهداری و منسوخ‌سازی

‎deprecate‎، ‎yank‎ و مسئولیت در برابر کاربران.

در نوبت نوشتن
۱۶

پروژهٔ ۱ — اولین پکیج عمومی

یک کتابخانهٔ کوچک را واقعاً منتشر کن.

در نوبت نوشتنپروژهٔ ساده
۱۷

پروژهٔ ۲ — مخزن خصوصی

Nexus را بالا بیاور و از آن نصب و به آن منتشر کن.

در نوبت نوشتنپروژهٔ متوسط
۱۸

پروژهٔ ۳ — خط لولهٔ انتشار چندزیست‌بومی

یک ‎monorepo‎ که هم ‎npm‎ و هم ‎NuGet‎ منتشر می‌کند، خودکار و امضاشده.

در نوبت نوشتنپروژهٔ پیچیده