Codama는 프로그램의 IDL 파일에서 TypeScript 및 Rust 클라이언트를 생성합니다. 생성된 클라이언트에는 instruction 호출 및 계정 가져오기 기능이 포함되어 있어 프로그램 계정이나 instruction data를 수동으로 직렬화하고 역직렬화할 필요가 없습니다.
Codama는 활발히 개발 중이며 변경될 수 있습니다. 최신 정보는 빠른 참조에 연결된 리포지토리를 참조하세요.
빠른 참조
CLI 명령어
| 명령어 | 설명 |
|---|---|
codama init | Codama 구성 파일 생성 |
codama run | 구성 파일에서 프로그램 클라이언트 생성 |
클라이언트 생성기
| 패키지 | 설명 |
|---|---|
@codama/renderers-js | @solana/kit 호환 TypeScript 클라이언트 생성 |
@codama/renderers-rust | solana_sdk 호환 Rust 클라이언트 생성 |
@codama/nodes-from-anchor | 클라이언트 생성을 위해 Anchor IDL을 Codama IDL로 변환 |
추가 리소스
| 리소스 | 설명 |
|---|---|
| Codama | Codama GitHub |
| Codama CLI | Codama CLI GitHub |
| Codama Macros | Codama Macros GitHub. Codama 매크로를 사용하여 네이티브 Rust 프로그램에서 Codama IDL 생성 |
| Codama Macros Example Program | Codama 매크로 사용을 보여주는 예제 프로그램 |
예제
이 예제는 Anchor 프로그램 IDL에서 클라이언트를 생성하는 과정을 안내합니다.
프로젝트 파일 설정
따라하려면 example라는 새 디렉터리를 만들고 코드 스니펫의 idl.json 파일과
package.json 파일을 추가하세요.
이 예제는 카운터 프로그램 IDL을 사용합니다. 소스 보기.
Anchor 프로젝트에서 IDL은 anchor build를 실행한 후
target/idl/<program_name>.json에서 찾을 수 있습니다.
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 크레이트를 생성하세요.
예를 들어, clients/js/에 package.json를 추가하고, clients/rust/에
Cargo.toml를 추가하세요.
이 접근 방식은 클라이언트를 재사용 가능한 라이브러리(npm 또는 crates.io)로 게시하거나 모노레포에서 여러 애플리케이션 간에 클라이언트를 공유할 때 사용하세요.
Is this page helpful?