Skip to main content
meow treats 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
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

After editing the manifest, meow runs a normal install so meow.lock.jsonl stays in sync.
If the same package appears in both dependencies and devDependencies with different specifiers, meow reports a conflict rather than silently picking one:
Keep a package in one section, or make the specifiers match.

Compatibility marker

Some framework detectors look for a package-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.