التنمية
SubLane دليل: التنمية.
الاحتياجات
- 1-26 أو أكثر؛ والوحدة تحدد مجموعة الأدوات الدنيا.
- Node.js 24
.node-version). - Pnpm 9.12.2, matching the frontend
packageManagerالحقل. - (جي كي) من أجل اختبارات إختيار الإفراج الصناعي.
- Docker وهو اختياري للتنمية المحلية ولا يلزم إلا للتحقق من الحاويات.
أديروا كل الأهداف من جذور المستودعات
القيادات
| القيادة | الغرض |
|---|---|
make setup | حمولة ملصقة بـ "جو" و "مُعاليات" الأمامية |
make dev | ابدأوا بالخلفية مع تحميل الهواء مباشرة والواجهة مع Vite HMR |
make dev-api | تشغيل فقط العودة مع الهواء إعادة تحميل |
make dev-web | اركض فقط فيتي |
make changelog | Generate CHANGELOG.md مع جات - كليف 2-14.2 |
make changelog-check | التحقق من تشكيلة التغيير ونطاقات الإطلاق مع تاريخ التركيب الجيت |
make release-notes TAG=v0.1.0 | مذكرات جينات لبطاقة قائمة في محطة هاد |
make publish-check TAG=v0.1.0 | شروط مسبقة لإطلاق سراح باهظة دون إنشاء بطاقة أو دفعها |
make publish TAG=v0.1.0 | إنشاء ودفع بطاقة إطلاق مشروحة واحدة من متزامنة ونظيفة رئيسية |
make release VERSION=0.0.0-test | Build Linux amd64/arm64 archives and SHA-256 checksums locally |
make build | بناء واجهة وضمها إلى bin/sublane |
make generate | Regenerate typed database access using painted sqlc |
make generate-check | التحقق من توليد Go تطابق SQL و Sqlc التشكيلة |
make test | أجري اختبارات السيناريوهات، اختبارات السباقات واختبارات الواجهة |
make lint | المراهنات والتشكيل والآلات |
make check | تشغيل جميع الشيكات وبناء الإنتاج |
make brand | التصدير والتحقق من مجموعة العلامة التجارية الكاملة التي تم تجاهلها dist/brand/ |
make clean | :: إزالة الغازات المولدة، والناتج الأمامي، والصادرات التجارية |
make clean لا يزيل قاعدة البيانات أو المعالين، الهواء يعاد بناءه تلقائياً ويعيد تشغيله عندما يكون مصدره، مدمجاً في SQL، go.modأو go.sum تغيرات، تحديثات فييت للرمز الأمامي من خلال HMR دون إعادة تشغيل الخلفية. make dev WEB_PORT=5174 عندما يتم شغل المرفأ الأمامي
الماكيفيل يركض الهواء v1.67.4 خلال go run:: تحميل أول عملية احتجاج وتبنيها - لا حاجة إلى تركيب طائرات عالمية، ولا تزال معاليها خارج وحدة التطبيقات. .air.toml تبقي البنايات المؤقتة متجاهلة bin/air/ ويمنح الخادم ما يصل إلى عشر ثوان لإغلاقه بشكل رائع قبل إعادة التشغيل، وتبني الدعم الإنمائي نظاماً مُحكماً، ويطابق بناءات الإنتاج ويتفادى وجود مُضللات مُستهدفة في نشر ماكوس، ولا تزال اختبارات السباق تستخدمه في CGO.
الاتحاد
نسخ .env.example متغيرات التصدير في قوقعتك أو تمدهم للقيادة الواحدة
SUBLANE_LOG_LEVEL=debug make dev
SUBLANE_ADDR=127.0.0.1:9090 ./bin/sublaneWEB_PORT تغيرت فقط في المرفأ الأمامي، والخلف يستمع 127.0.0.1:8080 بواسطة الفشل، و(فيت) يقرأ نفس الشيء SUBLANE_ADDR كخلفية، إذا كان هناك Docker وعلى سبيل المثال، أو عملية أخرى تستخدم 8080، تختار ميناء خلفي مجاني:
SUBLANE_ADDR=127.0.0.1:9090 make dev WEB_PORT=5174make dev ويتحقق من العنوان الخلفي قبل بدء تشغيل الهواء أو فييت ويفشل إذا كان محتلاً، وهذا يحول دون ربط واجهة جديدة بصرامة بخلفية لا علاقة لها بها أو أكبر، بينما لا يزال الهواء يركض بعد فشل ملزِم. make dev-api و make dev-web بشكل منفصل، مرر نفس الشيء SUBLANE_ADDR لكلا الأمرين
The API يجب أن يحافظ العميل على المضيفchangeOrigin: falseبدء بدليل بيانات الاختبار الفارغ للتمرين على إنشاء مدير من خلال الاستمارة باستخدام وثائق التفويض الاصطناعية.
الاختبارات
تشمل اختبارات المساندة التحقق من صحة البيئة، والجديدة SQLite الاستهلالية، والإنشاءات/البحث مرة واحدة، ودورة حياة الأعضاء، والحدود القصوى لدورة المستعمل الواحد، والإلغاء غير المتفرغ، والدور API الوصول، وفحص المنشأ/الجسد، والحدود على المعدلات، وفشل الاستعداد، APIحدود الأصول الثابتة - تشمل اختبارات الواجهة تحديد مسارات وضغوط الوعي بالدور، والتغييرات في تكوين الأعضاء/التغييرات في الحالة، والتأكد من صحة الضبط، وأخطاء النقل، والتخليص من المستودعات، والتخليص من الهوية، والتحقق من صحة الرد، والملاحة، والاختيار المستمر للموضوع/اللغة، ولا تستخدم التركيبات الاصطناعية وقواعد البيانات المؤقتة إلا.
إجراء اختبارات مركزة أثناء التنمية:
go test ./internal/server -run TestRoutesAndAssetBoundary -count=1
pnpm --dir web test src/App.test.tsxوينبغي أن يشمل التحقق من الازدحام مخططات مكتبية وضيقة، وملاحة متنقلة، وإعادة تحميل المسارات المباشرة، وتغييرات لغوية، ومواضيع خفيفة/دارية/نظامية، ونسخة احتياطية مفصولة، ولا تحل اختبارات الوحدة محل هذه الضوابط.
Codex اختبارات التكييف
اختبارات التكييف لا تستخدم حساباً حقيقياً أبداً، بل تحقن المزيّفات المحلية من خلال ممر نقل بينما يبقى اختيار نقطة الإنتاج ثابتاً Codex CLI with an isolated temporary formation and synthetic model output:
SUBLANE_TEST_CODEX=1 go test ./internal/server -run TestCodexCLIProtocol -count=1 -vجناح الاختبار العادي يتخطى اختبار اختيار العملاء الخارجيين لا تقرأ المطور الحالي auth.json أو سلسلة مفاتيح الاختبارات - يتطلب قبول مقدمو خدمات الكبد والحواسيب المكتبية حساباً مأذوناً به صراحة؛ ويسجلون تلك النتائج بشكل منفصل عن تغطية البروتوكولات.
إضافة ترجمة
- إضافة مفتاح إنجليزي
web/src/locales/en.ts. - أضف نفس المفتاح
web/src/locales/zh.tsوجميع المحليات الإضافية JSON القاموس - الحفاظ على متغيرات الاستقطاب وتوفير الفئات التعددية المطلوبة لكل لغة. - الاستخدام
useTranslation()وt()في المكونات، بما في ذلك بطاقات التعريفات الجمركية. - اركض
pnpm --dir web typecheckوتفتيش الترجمة التحريرية الأطول على الحاسوب المكتبي والضيق، التحقق من التصميمات العربية لليمين إلى اليسار، والاحتفاظ بالرمز والمحددات اليسارية.
اللغات المدعومة هي الإنكليزية والصينية المبسّطة والصينية التقليدية واليابانية والكورية والإسبانية والفرنسية والألمانية والبرتغالية والروسية والعربية، كما أن الموقع الشبكي يحتفظ بالمواضيع الانكليزية عند الطلب. content/docs/ and translations in content/<locale>/مع مضاهاة المسامير، والملاحة المحلية، والبحث، والميزنة، والترجمة الجديدة مدعومة آلياً، وتحتاج إلى استعراض لأبناء الشعوب الأصلية.
أفضليات الجامعة محلية للمتصفحين ليسوا فريقاً ولا يكتبون SQLite.
HTTP الطرق والاستفسارات المتعلقة بقاعدة البيانات
HTTP الطرق تستخدم الدخان مع المعيار net/http المتعاملون، الموارد تسجل أنفسهم Get, Head, Postو Patch المعالجون بالداخل Route المجموعات - إضافة مسارات إدارية إلى جهاز التوجيه الذي يحميه المدير internal/server/server.go- إن التوثيق العام والطرق الشخصية الرئيسية هي استثناءات صريحة. Useحماية الأخطاء في الطرق والمسارات المجهولة فضلاً عن مطابقة النقاط النهائية. With لا تعيدوا إدخال مفاتيح الإرسال أو الطرق في المتعاملين
كل تركيبة تحتية JSON NotFound و MethodNotAllowed المعالجون، المعالج 405 مستمد Allow من طرق شي المسجلة خلال Match(ب) دون أن يدير المتعاملون مع الطلبات - تسجيلات الصحة، ووضع النظام، والأصول الثابتة بشكل صريح للسجل العالي جداً؛ والاحتفاظ بطرائق أخرى معلنة، ولا يُسجل برنامج العمل الخاص إلا بالنسبة للشبكة العالمية للإحصاء/الإدارة على أساس عدم القدرة على التعامل مع هذه الأساليب التي يُحتفظ بها. API سقوط.
أكتبي سؤالاً عن (سي كي إل) internal/storage/queries/مجمّعة حسب المجال. sqlc.yaml استخدام نظام SQL الموحد في البداية كهيكلة له وتوليده internal/storage/db/اركض make generate وبعد تغيير الاستفسارات، أو الهيكل الكيميائي، أو تشكيلة المولدات الكهربائية، ابدأوا بشبكة SQL ونشأوا معاً؛ ولم يحرروا أبداً الملفات يدوياً. WithTx(tx)وتحول الصفوف إلى أنواع الاستجابة العامة.
ملصقات المكيفيل تُقلّقُ إلى v1.31.1 ويُديرُه خلال go runأول عملية تنزيل للاحتجاجات وبناء الأداة، قد تقوم بتحميل مجموعة أدوات متوافقة للمولدات، ولا حاجة لتركيب السحابة العالمية، أو لربط قواعد البيانات، وتبقى المعالين من المولدات خارج رسم التبعية للنموذج، ونسخ الملفات المولدة، لذا فإن الغو العادي لا يحتاج إلى سطو. make checkبما في ذلك CI، تشغيل make generate-check لرفض الوصية المولدة دون إعادة كتابة ذلك.
تغيير الكيماويات الجاهزة
احتفظ بالملفات الموجودة في internal/storage/migrations/ بما فيها 001_schema.sql. أضف ترحيلات تزايدية مرتبة لتغييرات البنية وحدّث الاستعلامات في internal/storage/queries/. يطبّق بدء التشغيل الترحيلات الناقصة على القواعد المدعومة، ويرفض البنية المبكرة غير المتوافقة التي تحتوي 001_settings.sql. شغّل make generate وmake generate-check واختبارات التخزين ذات الصلة. يتحقق sqlc من البنية لكنه لا يرحّل قاعدة البيانات قيد التشغيل.
المشكلات
- العودة الجذرية الخلفية
frontend_not_built: استخدام موقع Vite في الميناء 5173 لأغراض التنمية، أو تشغيلهmake buildو أبدأbin/sublane. - الجبهة تظهر فشلاً في الاتصال: يؤكد أن عملية الذهاب جارية و(فيت) تشير إلى العنوان المُحدّد
- المرفأ المستخدم بالفعل:
WEB_PORT(و) مراقبة الموقع؛SUBLANE_ADDRيتحكم بالخلفية ومحترفه فيت اختار عنوان خلفي مجانيSUBLANE_ADDR=127.0.0.1:9090 make dev WEB_PORT=5174- لا تنهي العمليات غير ذات الصلة. - اذهب لتحميل مجموعة الأدوات هذا متوقع عندما تكون (جو) المركب أكبر من
go.modيتطلب الأمر - Docker لا يمكن للبناء أن يربط: ابدأ Docker محرك، ثم تشغيل
docker compose -f docker.compose.yaml config --quietوdocker compose -f docker.compose.yaml -f docker.compose.build.yaml build. - تغيرت اللغة أو الموضوع: وتُخزَّن الأفضليات عمداً في التخزين المحلي للمتصفحين، وتُغيّرها في الملامح الافتراضية لإعادة التخلف عن السداد.
الصيانة
استمر go.sum و web/pnpm-lock.yaml (ب) تحت مراقبة الصيغ: إجراء تحسينات في التبعية كتغييرات منفصلة والحفاظ على إشعارات تراخيص الأطراف الثالثة، ولا تنسخ شجرة جديدة من طراز Shadcn Admin على المكونات المحلية دون استعراض التحول المحلي، والتسمية، والتغييرات في إمكانية الوصول.
عمليات التغليف والإفراج
انظر النشر اختبارات الدخان بالحاويات عمليات الإفراج من أجل خط الأنابيب المزود بالبطاقات make test (أ) تشمل اختبارات البيانات الفوقية المدمجة في Node، واختبارات النشر المؤقتة؛ make lint (د) تفحص عملية إطلاق/سموكة السيناريو الاصطناعي، وتقوم شركة CI ببناء الحاويات واختبارها على كل من بنية لينكس الأصلية، ثم ينشر تدفق العمل الخاص بالإفراج تلك الصور التي تم اختبارها بدقة ويستخرج من بيناتها، ولا تستخدم وثائق التفويض في عمليات التحقق من طلبات السحب.