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