عن المشروع
يوفر هذا المستودع مجموعة من أنماط تنظيم المشاريع التاريخية والشائعة لتطبيقات Go. وهو ليس معياراً رسمياً محدداً من فريق Go الأساسي، بل جهد مجتمعي لتوثيق الاتفاقيات الملاحظة في نظام Go.
يحدد التخطيط المجلدات الرئيسية التالية:
- /cmd: التطبيقات الرئيسية؛ يطابق كل مجلد فرعي اسم ملف تنفيذي، ويحتوي على دوال main بسيطة تستورد الأكواد من /internal و/pkg.
- /internal: أكواد خاصة بالتطبيق والمكتبات يفرضها مترجم Go نفسه (منذ الإصدار 1.4) لمنع الاستيرادات الخارجية. يمكن تشعيبه على أي مستوى.
- /pkg: أكواد مكتبات مخصصة للاستخدام الخارجي. توحي بأن الكود آمن للاستيراد من قبل الآخرين، رغم أن /internal هو البديل المفروض من المترجم للباقات الخاصة.
- /vendor: تبعيات التطبيق المُدارة عبر وحدات Go (go mod vendor).
- /api: مواصفات OpenAPI/Swagger وملفات JSON schema وتعريفات البروتوكولات.
- /web: الأصول الثابتة للويب وقوالب جانب الخادم وتطبيقات SPA.
- /configs: قوالب ملفات التكوين أو إعداداتها الافتراضية.
- /init: تهيئة النظام (systemd, upstart, sysv) وتكوينات إدارة العمليات.
- /scripts: نصوص البناء والتثبيت والتحليل لإبقاء Makefile الرئيسي بسيطاً.
- /build: عمليات التعبئة (AMI, Docker, deb, rpm) وتكوينات التكامل والنشر المستمر.
- /deployments: تكوينات نشر Bنية التحتية السحابية/IaaS وPaaS وأحواض الحاويات (docker-compose, kubernetes/helm, terraform).
- /test: تطبيقات اختبار خارجية إضافية وبيانات الاختبار.
- /docs, /tools, /examples, /third_party, /githooks, /assets, /website: مجلدات داعمة للتوثيق والأدوات والأمثلة والمساعدات الخارجية وحلقات Git والأصول وبيانات الموقع.
ينص README صراحةً على عدم推荐使用 مجلد /src (وهو اتفاق جافا) ويوصي بالبدء ببساطة (main.go واحدة وgo.mod) للمشاريع الصغيرة أو نماذج التحقق، واعتماد هيكلية أكثر تنظيماً مع نمو المشاريع. ويوصي بوحدات Go (جاهزة للإنتاج منذ الإصدار 1.14) وgofmt وstaticcheck للتنسيق والكشف عن الأخطاء. يتوفر الـREADME بأكثر من 18 لغة بما فيها الصينية واليابانية والكورية والفرنسية والإسبانية والروسية والهندية والبنغالية وغيرها.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.