Fully DeterministicSame inputs always produce the same SHA-256 hash — safe for caching, invalidation, and content addressing.
Transitive ResolutionWalks every `import` in your entry file and all its dependencies using `enhanced-resolve`, respecting package exports and conditional imports.
Monorepo-awareResolves `tsconfig.json` `paths` / `baseUrl` (following `extends`), strips `?raw` / `?url` style queries, and expands `import.meta.glob`.
Loud about gapsEvery import that could not be hashed is listed in `result.unresolved`, summarised on stderr, and can fail CI with `--fail-on-unresolved`.
Multi-FormatHandles `.ts`, `.tsx`, `.js`, `.jsx`, `.mjs`, `.mts`, `.cjs`, `.json`, and more out of the box.
Extras SupportInclude arbitrary files (e.g. `package.json`, lockfiles, config) in the hash to catch environment changes.
Library or CLIImport `hashup()` from Node, or run the `hashup` binary against a `hashup.json` config with any number of named entries.