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 | Luo codama-konfiguraatiotiedosto |
codama run | Luo ohjelman asiakasohjelmat konfiguraatiotiedostosta |
Asiakasgeneraattorit
| Paketti | Kuvaus |
|---|---|
@codama/renderers-js | Luo @solana/kit-yhteensopivia TypeScript-asiakasohjelmia |
@codama/renderers-rust | Luo solana_sdk-yhteensopivia Rust-asiakasohjelmia |
@codama/nodes-from-anchor | Muunna Anchor IDL:t Codama IDL:iksi asiakasohjelmien luomista 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 komennon
anchor build suorittamisen jälkeen.
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ä kysyy sinulta kysymyksiä luodakseen codama.json-tiedoston projektisi
juureen ja asentaakseen 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
Luodut asiakasohjelmat sisältävät lähdekoodin ohjelmasi kanssa
vuorovaikutukseen, mutta eivät sisällä package.json-tiedostoa (TypeScriptille)
tai Cargo.toml-tiedostoa (Rustille).
Sinun täytyy joko luoda uusi package.json- ja Cargo.toml-tiedostot tai
lisätä vaaditut riippuvuudet luoduista asiakasohjelmista projektisi olemassa
oleviin tiedostoihin.
Integroitu sovellukseesi
Luo asiakasohjelma suoraan sovelluksesi lähdekoodihakemistoon ja lisää sitten
vaaditut riippuvuudet olemassa olevaan package.json- tai
Cargo.toml-tiedostoosi.
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 clientille. Lisää
esimerkiksi package.json kansioon clients/js/ ja Cargo.toml kansioon
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?