Asiakkaiden generointi
Codama generoi TypeScript- ja Rust- asiakkaita ohjelman IDL-tiedostosta. Generoidut asiakkaat sisältävät funktioita ohjeistusten kutsumiseen ja tilien hakemiseen, poistaen tarpeen manuaalisesti serialisoida ja deserialisoida ohjelmatilejä tai instruction data.
Codama on aktiivisessa kehityksessä ja voi muuttua. Katso viimeisimmät tiedot pikaoppaan linkitetyistä repositorioista.
Pikaopas
CLI-komennot
| Komento | Kuvaus |
|---|---|
codama init | Generoi Codama-konfiguraatiotiedosto |
codama run | Generoi ohjelma-asiakkaat konfiguraatiotiedostosta |
Asiakasgeneraattorit
| Paketti | Kuvaus |
|---|---|
@codama/renderers-js | Generoi @solana/kit yhteensopivia TypeScript-asiakkaita |
@codama/renderers-rust | Generoi solana_sdk yhteensopivia Rust-asiakkaita |
@codama/nodes-from-anchor | Muuntaa Anchor IDL:t Codama IDL:iksi asiakkaiden generointia varten |
Lisäresurssit
| Resurssi | Kuvaus |
|---|---|
| Codama | Codama GitHub |
| Codama CLI | Codama CLI GitHub |
| Codama Macros | Codama Macros GitHub. Generoi Codama IDL natiiveista Rust-ohjelmista Codama-makroilla |
| Codama Macros Example Program | Esimerkkiohjelma, joka demonstroi Codama-makrojen käyttöä |
Esimerkki
Tämä esimerkki käy läpi prosessin asiakkaiden generoimiseksi Anchor-ohjelman IDL:stä.
Projektin tiedostojen asennus
Seurataksesi mukana, luo uusi hakemisto nimeltä example ja lisää idl.json
tiedosto ja package.json tiedosto koodiesimerkeistä.
Tämä esimerkki käyttää counter-ohjelman IDL:ää. Katso lähdekoodi.
Anchor-projektissa IDL löytyy polusta target/idl/<program_name>.json kun olet
suorittanut komennon anchor build.
Luo Codama-määritystiedosto
Codama käyttää määritystiedostoa määrittääkseen IDL-tiedoston sijainnin, mitä asiakasohjelmakieliä generoidaan ja mihin generoitu koodi tulostetaan. Luo tämä määritys suorittamalla:
$npx codama init
Tämä esittää sinulle kysymyksiä luodakseen codama.json tiedoston projektisi
juureen ja asentaa tarvittavat Codama-riippuvuudet.
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
Generoi asiakasohjelmat
Kun määritystiedosto on luotu, suorita generointikomento luodaksesi asiakasohjelmakoodit:
$npx codama run --all
Tämä generoi ohjelma-asiakasohjelmat tiedostopolkuihin, jotka on määritetty codama-määritystiedostossa.
{"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}]}}}
Kaikkia generoituja tiedostoja ei näytetä vastaavissa koodiesimerkeissä.
Generoitujen asiakasohjelmien käyttäminen
Generoidut asiakasohjelmat sisältävät lähdekoodin ohjelmasi kanssa
vuorovaikuttamiseen, mutta eivät sisällä package.json (TypeScriptille) tai
Cargo.toml (Rustille) tiedostoja.
Sinun täytyy joko luoda uudet package.json ja Cargo.toml tiedostot tai
lisätä vaaditut riippuvuudet generoiduista asiakasohjelmista projektisi olemassa
oleviin tiedostoihin.
Integroitu sovellukseesi
Generoi asiakasohjelma suoraan sovelluksesi lähdehakemistoon ja lisää sitten
vaaditut riippuvuudet olemassa olevaan package.json tai Cargo.toml
tiedostoon.
Käytä tätä lähestymistapaa rakentaessasi sovellusta, jossa asiakasohjelman koodia ei tarvitse jakaa tai julkaista.
Erilliset paketit tai cratet
Luo erilliset TypeScript-paketit tai Rust-cratet jokaiselle asiakasohjelmalle.
Esimerkiksi lisää package.json hakemistoon clients/js/ ja Cargo.toml
hakemistoon clients/rust/.
Käytä tätä lähestymistapaa julkaistaksesi asiakasohjelman uudelleenkäytettävänä kirjastona (npm tai crates.io) tai jakaaksesi asiakasohjelman useiden sovellusten kesken monorepo-ympäristössä.
Is this page helpful?