Skip to main content
meow.config.json is the one human-edited config for a meow project. It replaces the usual scatter of .eslintrc, .prettierrc, tsconfig.json, and test configs. Everything in it is runtime/toolchain behavior — dependencies, scripts, and workspaces live in your package.json.
meow.config.json
The config is a closed schema: unknown keys are a parse error, not a silent ignore. A typo’d key is caught immediately rather than quietly doing nothing. Keys use camelCase. Every key has a default, so the minimal config is {}.
Only meow.config.json is read today. A meow.config.ts is recognized but not yet evaluated (it requires the runtime) — meow returns a clear meow.config.ts evaluation is not yet supported error rather than guessing. Use JSON for now.

Full schema

meow.config.json

Key reference

"strict-web" | "node-compat" | "legacy"
default:"\"strict-web\""
The runtime mode. strict-web is a deterministic, web-standard sandbox; node-compat (and the legacy alias) expose the full Node surface with host access. This is the key behavioral switch and is read on every run.
boolean
default:"true"
Sets strict in the generated .meow/tsconfig.json. Run meow sync after changing it. Drives meow check and your editor’s types.
object (rule id → severity)
default:"{}"
Per-rule severities for meow lint, keyed by rule id. Each value is "off", "warn", or "error".
"meow"
default:"\"meow\""
The formatter style. meow ships one opinionated style — there are no formatting knobs.
"strip"
default:"\"strip\""
How TypeScript is handled for execution. meow strips types in place; this is the only meaningful value.
string[]
default:"[]"
Glob roots for a monorepo, e.g. ["apps/*", "packages/*"].
"pnp" | "vfs" | "materialized" | "vendor"
default:"\"pnp\""
The intended install projection.
boolean / enum / enum
Test-runner defaults. Today meow test always runs each suite in a deterministic isolate; these keys are accepted and forward-looking.
string array / object
default:"[] / {}"
Per-package capability grants (default is a string array; packages maps a package name to a string array). Accepted and reserved; not yet enforced — see the permissions scope note.

What’s active today

Some keys change behavior right now; others are part of the closed schema but forward-looking. The config validates either way. After editing the config, regenerate the editor/TypeScript shims:

package.json reference

Dependencies, scripts, overrides, and workspaces.