metaxy generate

Generate TypeScript types and a typed client from Rust source files. One-shot execution.

Usage

sh
# Generate types + client from ./api directory
metaxy generate

Input Flags

FlagDefaultDescription
-d, --dirapiRust source directory
--include**/*.rsGlob patterns to include (repeatable)
--excludeGlob patterns to exclude (repeatable)
sh
# 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

FlagDefaultDescription
-o, --outputsrc/lib/rpc-types.tsTypes file path
-c, --client-outputsrc/lib/rpc-client.tsClient file path
--svelte-outputSvelte 5 reactive wrapper (opt-in)
--react-outputReact hooks (opt-in)
--vue-outputVue 3 composables (opt-in)
--solid-outputSolidJS primitives (opt-in)
--types-import./rpc-typesImport path for types in client
--extension""Import extension, e.g. ".js" for ESM
sh
# 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

FlagDefaultDescription
--preserve-docsfalseForward Rust /// as JSDoc
--branded-newtypesfalseEmit branded types for newtypes
--fieldspreservepreserve or camelCase
--type-overrideMap Rust type to TS (repeatable)
--bigint-typeMap integer type to bigint (repeatable)
sh
# 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

visit GitHub to learn more about metaxy