إنشاء العملاء
يقوم Codama بإنشاء عملاء TypeScript وRust من ملف IDL الخاص بالبرنامج. تتضمن العملاء المُنشأة وظائف لاستدعاء التعليمات واسترجاع الحسابات، مما يلغي الحاجة إلى تسلسل وفك تسلسل حسابات البرنامج أو instruction data يدويًا.
Codama قيد التطوير النشط وعرضة للتغيير. يرجى الرجوع إلى المستودعات المرتبطة في المرجع السريع للحصول على أحدث المعلومات.
مرجع سريع
أوامر واجهة سطر الأوامر
| الأمر | الوصف |
|---|---|
codama init | إنشاء ملف تكوين codama |
codama run | إنشاء عملاء البرنامج من ملف التكوين |
مولدات العملاء
| الحزمة | الوصف |
|---|---|
@codama/renderers-js | إنشاء عملاء TypeScript متوافقة مع @solana/kit |
@codama/renderers-rust | إنشاء عملاء Rust متوافقة مع solana_sdk |
@codama/nodes-from-anchor | تحويل Anchor IDLs إلى Codama IDLs لإنشاء العملاء |
موارد إضافية
| المورد | الوصف |
|---|---|
| Codama | GitHub الخاص بـ Codama |
| Codama CLI | GitHub الخاص بواجهة سطر أوامر Codama |
| Codama Macros | GitHub الخاص بـ Codama Macros. إنشاء Codama IDL من برامج Rust الأصلية باستخدام وحدات ماكرو Codama |
| Codama Macros Example Program | برنامج مثال يوضح استخدام وحدات ماكرو Codama |
مثال
يشرح هذا المثال عملية إنشاء العملاء من IDL برنامج Anchor.
إعداد ملفات المشروع
للمتابعة، قم بإنشاء دليل جديد يسمى example وأضف ملف idl.json وملف
package.json من مقتطفات الكود.
يستخدم هذا المثال IDL لبرنامج العداد. عرض المصدر.
في مشروع Anchor، يمكن العثور على IDL في target/idl/<program_name>.json بعد
تشغيل anchor build.
إنشاء ملف تكوين Codama
يستخدم Codama ملف تكوين لتحديد موقع ملف IDL، ولغات العميل التي سيتم إنشاؤها، وأين سيتم إخراج الكود المُنشأ. قم بإنشاء هذا التكوين عن طريق تشغيل:
$npx codama init
سيطرح عليك هذا أسئلة لإنشاء ملف codama.json في الجذر الخاص بمشروعك وتثبيت
تبعيات Codama الضرورية.
Welcome to Codama!✔ Where is your IDL located? (Supports Codama and Anchor IDLs). … idl.json✔ Which script preset would you like to use? › Generate JavaScript client, Generate Rust client✔ [js] Where should the JavaScript code be generated? … clients/js/src/generated✔ [rust] Where is the Rust client crate located? … clients/rust✔ [rust] Where should the Rust code be generated? … clients/rust/src/generated▲ Your configuration requires additional dependencies.▲ Install command: pnpm install @codama/nodes-from-anchor @codama/renderers-js @codama/renderers-rust✔ Install dependencies? … yes→ Installing├─ @codama/nodes-from-anchor├─ @codama/renderers-js└─ @codama/renderers-rust✔ Dependencies installed successfully.✔ Configuration file created.└─ Path: /example/codama.json
إنشاء العملاء
بمجرد إنشاء ملف التكوين، قم بتشغيل أمر الإنشاء لتوليد العملاء:
$npx codama run --all
سيقوم هذا بإنشاء عملاء البرنامج في مسارات الملفات المحددة في ملف تكوين codama.
{"idl": "idl.json","before": [],"scripts": {"js": {"from": "@codama/renderers-js","args": ["clients/js/src/generated"]},"rust": {"from": "@codama/renderers-rust","args": ["clients/rust/src/generated",{"crateFolder": "clients/rust","formatCode": true}]}}}
لا يتم عرض جميع الملفات المُنشأة في مقتطفات الكود المقابلة.
استخدام العملاء المُنشأين
تتضمن العملاء المُنشأة شيفرة المصدر للتفاعل مع برنامجك ولكن لا تتضمن ملفات
package.json (لـ TypeScript) أو Cargo.toml (لـ Rust).
ستحتاج إما إلى إنشاء ملفات package.json و Cargo.toml جديدة أو إضافة التبعيات
المطلوبة من العملاء المُنشأة إلى الملفات الموجودة في مشروعك.
دمجها في تطبيقك
قم بإنشاء العميل مباشرة في دليل المصدر لتطبيقك ثم أضف التبعيات المطلوبة إلى
ملفات package.json أو Cargo.toml الموجودة.
استخدم هذا النهج عند بناء تطبيق لا تحتاج فيه شيفرة العميل إلى المشاركة أو النشر.
حزم أو صناديق مستقلة
قم بإنشاء حزم TypeScript منفصلة أو صناديق Rust لكل عميل. على سبيل المثال، أضف
package.json في clients/js/ و Cargo.toml في clients/rust/.
استخدم هذا النهج لنشر العميل كمكتبة قابلة لإعادة الاستخدام (npm أو crates.io) أو مشاركة العميل عبر تطبيقات متعددة في مستودع أحادي.
Is this page helpful?