Δημιουργία Clients
Codama δημιουργεί TypeScript και Rust clients από το αρχείο IDL ενός προγράμματος. Οι παραγόμενοι clients περιλαμβάνουν συναρτήσεις για την κλήση εντολών και την ανάκτηση λογαριασμών, εξαλείφοντας την ανάγκη για χειροκίνητη σειριοποίηση και αποσειριοποίηση λογαριασμών προγράμματος ή instruction data.
Το Codama βρίσκεται σε ενεργή ανάπτυξη και υπόκειται σε αλλαγές. Ανατρέξτε στα συνδεδεμένα αποθετήρια στη γρήγορη αναφορά για τις πιο πρόσφατες πληροφορίες.
Γρήγορη αναφορά
Εντολές CLI
| Εντολή | Περιγραφή |
|---|---|
codama init | Δημιουργία αρχείου διαμόρφωσης codama |
codama run | Δημιουργία clients προγράμματος από το αρχείο διαμόρφωσης |
Γεννήτριες Client
| Πακέτο | Περιγραφή |
|---|---|
@codama/renderers-js | Δημιουργία @solana/kit συμβατών TypeScript clients |
@codama/renderers-rust | Δημιουργία solana_sdk συμβατών Rust clients |
@codama/nodes-from-anchor | Μετατροπή Anchor IDLs σε Codama IDLs για τη δημιουργία clients |
Πρόσθετοι πόροι
| Πόρος | Περιγραφή |
|---|---|
| Codama | Codama GitHub |
| Codama CLI | Codama CLI GitHub |
| Codama Macros | Codama Macros GitHub. Δημιουργία Codama IDL από εγγενή προγράμματα Rust με Codama macros |
| Codama Macros Example Program | Παράδειγμα προγράμματος που επιδεικνύει τη χρήση Codama macros |
Παράδειγμα
Αυτό το παράδειγμα καθοδηγεί τη διαδικασία δημιουργίας clients από ένα Anchor program IDL.
Ρύθμιση αρχείων έργου
Για να ακολουθήσετε, δημιουργήστε έναν νέο κατάλογο με όνομα example και
προσθέστε το αρχείο idl.json και το αρχείο package.json από τα αποσπάσματα
κώδικα.
Αυτό το παράδειγμα χρησιμοποιεί ένα IDL προγράμματος μετρητή. Προβολή πηγαίου κώδικα.
Σε ένα project Anchor, το IDL βρίσκεται στο target/idl/<program_name>.json
μετά την εκτέλεση της εντολής anchor build.
Δημιουργία αρχείου διαμόρφωσης Codama
Το Codama χρησιμοποιεί ένα αρχείο διαμόρφωσης για να καθορίσει πού βρίσκεται το αρχείο IDL, ποιες γλώσσες πελάτη θα δημιουργηθούν και πού θα εξαχθεί ο παραγόμενος κώδικας. Δημιουργήστε αυτή τη διαμόρφωση εκτελώντας:
$npx codama init
Αυτό θα σας προτρέψει με ερωτήσεις για να δημιουργήσετε ένα αρχείο codama.json
στο root του project σας και να εγκαταστήσετε τις απαραίτητες εξαρτήσεις του
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
Δημιουργία Clients
Μόλις δημιουργηθεί το αρχείο διαμόρφωσης, εκτελέστε την εντολή δημιουργίας για να παράγετε τους clients:
$npx codama run --all
Αυτό θα δημιουργήσει τους clients του προγράμματος στις διαδρομές αρχείων που καθορίζονται στο αρχείο διαμόρφωσης 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}]}}}
Δεν εμφανίζονται όλα τα παραγόμενα αρχεία στα αντίστοιχα αποσπάσματα κώδικα.
Χρήση των παραγόμενων Clients
Οι παραγόμενοι πελάτες περιλαμβάνουν πηγαίο κώδικα για αλληλεπίδραση με το
πρόγραμμά σας αλλά δεν περιλαμβάνουν αρχεία package.json (για TypeScript) ή
Cargo.toml (για Rust).
Θα χρειαστεί είτε να δημιουργήσετε νέα αρχεία package.json και Cargo.toml
είτε να προσθέσετε τις απαιτούμενες εξαρτήσεις από τους παραγόμενους πελάτες στα
υπάρχοντα αρχεία του έργου σας.
Ενσωμάτωση στην εφαρμογή σας
Δημιουργήστε τον πελάτη απευθείας στον κατάλογο πηγαίου κώδικα της εφαρμογής σας
και στη συνέχεια προσθέστε τις απαιτούμενες εξαρτήσεις στα υπάρχοντα αρχεία
package.json ή Cargo.toml.
Χρησιμοποιήστε αυτήν την προσέγγιση όταν δημιουργείτε μια εφαρμογή όπου ο κώδικας του πελάτη δεν χρειάζεται να κοινοποιηθεί ή να δημοσιευθεί.
Αυτόνομα πακέτα ή crates
Δημιουργήστε ξεχωριστά πακέτα TypeScript ή crates Rust για κάθε πελάτη. Για
παράδειγμα, προσθέστε package.json στο clients/js/ και Cargo.toml στο
clients/rust/.
Χρησιμοποιήστε αυτήν την προσέγγιση για να δημοσιεύσετε τον πελάτη ως επαναχρησιμοποιήσιμη βιβλιοθήκη (npm ή crates.io) ή για να μοιραστείτε τον πελάτη σε πολλαπλές εφαρμογές σε ένα monorepo.
Is this page helpful?