🔧 Drop the redundant knip entry pattern

knip derives the public entry from package.json `exports` and resolves
it to src/index.ts itself, so naming the file in `entry` is redundant:
maintain:knip reported it as a configuration hint, and the scan is now
silent. Verified the barrel is still treated as the entry — the scope
is clean with and without dist/, and with src/index.test.ts removed.

Supersedes the workaround recorded in development/tooling.md, which
silenced an unused-file report for the barrel that the current entry
derivation no longer produces. Rewrite the section to state the
behaviour and keep the rejected `paths` mapping.
This commit is contained in:
tmu committed 2026-09-28 21:55:05 +00:00
1 parent eb1acbd9d8
commit 5025fa3870
2 files changed
+13 -12

No files matched your search

+12 -11
View File
@@ -196,27 +196,28 @@ joining the oxfmt-superseded rules already off.
are part of the public API.
- The narrower scope keeps the signal high without config-file boilerplate.
### `knip` lists `src/index.ts` as an entry
### `knip` does not list the library entry
#### Decision (2026-09)
`knip.json` declares `"entry": ["src/index.ts", "scripts/*.ts"]`.
`knip.json` declares `"entry": ["scripts/*.ts"]`; the library entry
`src/index.ts` is not listed.
#### Why
- Supplying `entry` **replaces** knip's default entry detection, which otherwise
derives the public entry from `package.json` `exports`. Adding `scripts/*.ts`
there therefore dropped the library entry, so knip resolved the package through
its `dist/index.js` output and reported the unreferenced source entry file
`src/index.ts` as an unused file.
- Naming the source entry restores the link between the public API and the
source graph without pointing knip at build output.
- knip derives the public entry from `package.json` `exports` and resolves it to
`src/index.ts` itself, so naming the file is a redundant pattern and
`maintain:knip` reports it as a configuration hint.
- Listing `scripts/*.ts` does not switch that derivation off: the scope stays
clean with or without `dist/`, and with the barrel's own test removed.
#### Rejected
- `"src/index.ts"` in `entry`: it silenced an `unused files` report for the
barrel, which the derivation above no longer produces; keeping it only adds a
hint.
- `paths` mapping `dist/index.*` back to `src/index.ts`: more config to model a
relation the explicit entry states directly, and it would break whenever the
build layout changes.
relation knip already resolves.
### `maintain:outdated` ignores `@types/node`