DEVELOPERS.md
npm install
| Command | Description |
|---|---|
npm run build | Build all dist targets (CJS, ESM, minified, types) |
npm test | Run the test suite (vitest) |
npm run typecheck | Type-check the source without emitting |
npm run lint | Lint source and tests (eslint) |
npm run dev | Watch mode for ESM dev build |
npm run dev:cjs | Watch mode for CJS dev build |
node bench.mjs | Run benchmarks (10k records) |
Source is TypeScript. Types are emitted from source via rollup-plugin-dts.
src/
core/ — Fuse class, config, scoring, query parser, formatting
search/ — Bitap algorithm + extended search (operators, matchers)
tools/ — FuseIndex, KeyStore, MaxHeap, field-length norm
helpers/ — Utility functions (type guards, get, diacritics)
types.ts — Shared type definitions
entry.ts — Entry point with static methods and type exports
test/ — Tests and fixtures
scripts/ — Rollup build configs
dist/ — Built output (CJS, ESM, .d.ts)
Fuse.js follows conventional commits. Commit messages are used to generate the changelog.
<type>(<scope>): <subject>
The scope specifies the area of the change, e.g. search, index, options. Use * for changes affecting multiple scopes.