Rules
- Write schema in
.graphqlfiles → runaxolotl build→ types generated inmodels.ts - NEVER edit
models.tsmanually — always overwritten byaxolotl build @resolvermarks fields requiring a resolver implementation- Each federation module has its own
.graphql;axolotl buildmerges them intobackend/schema.graphql - No
extend type— Axolotl merges types by name. Use plaintypedeclarations. - Always use
.jsextensions in imports (ESM)
@resolver Directive
directive @resolver on FIELD_DEFINITION
type Query {
user: AuthorizedUserQuery @resolver # needs resolver
hello: String! # no @resolver — resolved inline
}
axolotl resolvers scaffolds files only for @resolver fields.
CLI Commands
| Command | Effect |
|---|---|
cd backend && npx @aexol/axolotl build |
Merge schemas → regenerate models.ts + Zeus client |
cd backend && npx @aexol/axolotl resolvers |
Scaffold resolver files for @resolver fields (non-destructive) |
cd backend && npx @aexol/axolotl inspect -s schema.graphql -r lib/resolvers.js |
Report unimplemented @resolver fields |
Federation Schema Pattern
# src/modules/users/schema.graphql
directive @resolver on FIELD_DEFINITION
type AuthorizedUserQuery {
me: User @resolver
}
Declare type with same name across modules — axolotl build merges fields. axolotl.json lists all module schemas under federation[].
Converted and distributed by TomeVault — claim your Tome and manage your conversions.