# Contributing Thanks for taking a look. ## Getting set up ```bash npm install npm run check # typecheck + lint + format + tests + build ``` `npm run format` rewrites files to match Prettier; `npm run lint` is ESLint on its own. Markdown is left to hand-wrapping — see `.prettierignore`. Tests use the Node built-in runner (`node:test`), compiled with `tsc` first — there is no test framework to install. Sources are in `src/`, tests in `test/`. ## Ground rules - **A behaviour change comes with a test.** A fake should not be enabled by accident, so every rule in the README's behaviour table has a test pinning it. - **Keep the per-resolution path cheap.** Metro calls the returned resolver for every module in the graph. Anything expensive belongs in `createSliceResolver`, which runs once. - **No runtime dependencies.** The package must stay installable into any Metro project without pulling a tree behind it. - **Fail loudly when the resolver is built**, rather than quietly at resolve time. A misconfiguration that leaves you on the real module while you think you are on a fake is hard to spot. ## Releasing 1. Update `CHANGELOG.md` under a new version heading. 2. `npm version ` — `prepublishOnly` runs `npm run check`. 3. `npm publish && git push --follow-tags`.