package.json as the authority for dependencies, scripts, and
project metadata. It’s a standard npm manifest — meow reads the fields below and
only ever writes the dependency sections, on explicit add / remove /
install <pkg> actions. Your scripts and metadata are never rewritten.
Fields meow reads
package.json
| Field | How meow uses it |
|---|---|
dependencies / devDependencies | The direct dependencies meow resolves and installs. |
peerDependencies | Read for resolution context. |
overrides | Force a specific version for a (possibly transitive) package during resolve. |
scripts | Runnable via meow run <name> / meow dev / meow task, with pre/post hooks. |
workspaces | Monorepo package globs — either ["apps/*"] or { "packages": [...], "nohoist": [...] }. |
name / version | Project metadata. |
type: "module" is recommended (and what meow init writes). meow runs ESM
natively; CommonJS interop still works in node-compat mode.Dependency specifiers
The version strings follow npm semantics — see the full table in version specifiers. In short:How meow edits it
meow.lock.jsonl stays
in sync.
Compatibility marker
Some framework detectors look for apackage-lock.json. meow can write a minimal
marker (flagged meowCompatibilityLockfile) without ceding authority — your
meow.lock.jsonl stays the source of truth:
The lockfile
How package.json resolves into meow.lock.jsonl.