Migration workflow
Preview the migration
Run Fallow searches for:
fallow migrate --dry-run to see the generated config without writing anything:knip.json, knip.jsonc, .knip.json, .knip.jsonc, knip.ts, knip.config.ts, and the knip field in package.json. TypeScript config files (knip.ts, knip.config.ts) are detected but cannot be parsed. Convert to knip.json first.$ fallow migrate --dry-run
Review the config
Open the generated config and verify the translated entry points, ignore patterns, and plugin mappings. Warnings are shown for any fields that couldn’t be migrated automatically.
What gets migrated
| knip | fallow |
|---|---|
entry | entry |
project | — (fallow auto-discovers project files) |
ignore | ignorePatterns |
ignoreDependencies | ignoreDependencies |
ignoreExportsUsedInFile | ignoreExportsUsedInFile (boolean and { type, interface } object form both supported) |
ignoreBinaries | — (not applicable) |
| Plugin configs | Closest fallow plugin equivalent |
Warnings and caveats
fallow migrate is loud about anything it cannot translate so the migration is not silently lossy.
Unknown rule names. If your knip rules, exclude, or include entries reference a key that fallow does not know (typo, future knip rule, or an issue type the migrator has not yet catalogued), the migration emits a warning like:
binaries, optionalPeerDependencies, and similar issue types knip emits but fallow does not), the warning reads issue type \X` has no fallow equivalent` and has no suggestion.
Glob-engine drift. Knip and fallow use different glob engines, so entry and ignorePatterns are copied verbatim but may match a slightly different file set than they did under knip. When the migrated config carries either field, the migrate command prints:
{ts,tsx}, double-star **, src/**) match identically across both engines. Known drift today: fallow’s ignorePatterns does not honor leading ! as negation; entries are matched literally. Run fallow check on a representative subset before relying on the migrated globs in CI.
Comparison
- Speed
- Features
- Coverage
Fallow is a Rust-native standalone binary. No Node.js runtime, no JIT warmup, no garbage collection pauses.
| Metric | fallow | knip |
|---|---|---|
| Speed vs knip v5 | 3—36x faster | Baseline |
| Speed vs knip v6 | 2—14x faster | Baseline |
| Memory usage | 3—11x less | Baseline |
| Runtime dependency | None (standalone binary) | Node.js |
| CI setup | Download binary | Install Node + npm dependencies |
Key differences
No runtime dependency
Fallow is a standalone binary. No Node.js runtime, no dependency conflicts, faster CI setup.See also
Custom plugins
Build plugins for frameworks fallow doesn’t cover yet.
fallow migrate
Full CLI reference for the migrate command.