metaxy generate
Generate TypeScript types and a typed client from Rust source files. One-shot execution.
Usage
# Generate types + client from ./api directory
metaxy generateInput Flags
| Flag | Default | Description |
|---|---|---|
-d, --dir | api | Rust source directory |
--include | **/*.rs | Glob patterns to include (repeatable) |
--exclude | — | Glob patterns to exclude (repeatable) |
# Custom source directory
metaxy generate --dir src/handlers
# Include only specific files
metaxy generate --include "api/**/*.rs"
# Exclude test files
metaxy generate --exclude "**/*_test.rs" --exclude "**/tests/**"Output Flags
| Flag | Default | Description |
|---|---|---|
-o, --output | src/lib/rpc-types.ts | Types file path |
-c, --client-output | src/lib/rpc-client.ts | Client file path |
--svelte-output | — | Svelte 5 reactive wrapper (opt-in) |
--react-output | — | React hooks (opt-in) |
--vue-output | — | Vue 3 composables (opt-in) |
--solid-output | — | SolidJS primitives (opt-in) |
--types-import | ./rpc-types | Import path for types in client |
--extension | "" | Import extension, e.g. ".js" for ESM |
# Custom output paths
metaxy generate -o src/generated/types.ts -c src/generated/client.ts
# Generate with Svelte wrappers
metaxy generate --svelte-output src/lib/rpc.svelte.ts
# Generate with multiple framework outputs
metaxy generate \
--svelte-output src/lib/rpc.svelte.ts \
--react-output src/lib/rpc.react.ts \
--vue-output src/lib/rpc.vue.ts \
--solid-output src/lib/rpc.solid.ts
# ESM import extension
metaxy generate --extension ".js"Codegen Flags
| Flag | Default | Description |
|---|---|---|
--preserve-docs | false | Forward Rust /// as JSDoc |
--branded-newtypes | false | Emit branded types for newtypes |
--fields | preserve | preserve or camelCase |
--type-override | — | Map Rust type to TS (repeatable) |
--bigint-type | — | Map integer type to bigint (repeatable) |
# Enable doc comments and branded newtypes
metaxy generate --preserve-docs --branded-newtypes
# camelCase fields
metaxy generate --fields camelCase
# Type overrides
metaxy generate \
--type-override "chrono::DateTime=string" \
--type-override "uuid::Uuid=string"
# BigInt mapping
metaxy generate --bigint-type i64 --bigint-type u64
# All codegen options combined
metaxy generate \
--preserve-docs \
--branded-newtypes \
--fields camelCase \
--type-override "chrono::DateTime=string" \
--bigint-type i64 --bigint-type u64