iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Sherif is a zero-config linter for JavaScript and TypeScript monorepos. It checks workspace and package conventions—such as inconsistent dependency versions and root-package setup—and can run from your repository root with the package manager you already use. A clean run or warnings alone exit successfully by default; errors return exit code 1.
What Sherif checks in a monorepo
Sherif is written in Rust and is designed to work without an installed node_modules directory. Its documented rules focus on consistency and workspace hygiene. They express Sherif’s conventions, not universal requirements: a team with intentional exceptions can ignore specific rules, packages, or dependencies.
Dependency consistency
multiple-dependency-versionsflags different versions of a dependency across the monorepo.unsync-similar-dependenciesflags related packages that are expected to stay in sync within a package, such asreactandreact-dom.- Other rules flag empty dependency fields, type packages placed in runtime dependencies, and dependencies that are not alphabetically ordered.
Workspace and root-package conventions
- Checks workspace paths that do not match a package and matched packages that do not have a
package.jsonfile. - Checks root-package conventions including declaring the package manager, making the root package private, and placing root dependencies in
devDependencies.
The project documents the rules and available options in its README.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Run Sherif locally
From the monorepo root, use the runner for your package manager. These commands use latest, so the version can change over time.
#1 Best Overall
- PNPM:
pnpm dlx sherif@latest - Bun:
bunx sherif@latest - npm:
npx sherif@latest - Yarn:
yarn dlx sherif@latest
Sherif supports PNPM, Bun, npm, and Yarn. For a repeatable CI check, pin a specific version rather than relying on latest; confirm the current release in the npm package listing when choosing the version.
Use Sherif in CI
The project documents a GitHub Action and an npm-based workflow example. Add Sherif after the repository’s existing dependency and workspace setup, then run it as a check so its exit status can determine whether the workflow passes. Pin its version in CI, and first resolve or deliberately ignore the existing findings to avoid introducing an unreviewed policy change.
Rank #2
By default, any error produces exit code 1; a clean result or warnings alone produce exit code 0. Use --fail-on-warnings if warnings should also fail the check. The project’s README provides its CI examples and options.
Fix findings and control autofix
The --fix option automatically resolves most issues. Review the proposed changes, especially dependency-version selections: fixing multiple versions can involve choosing which version to use. Add --select highest or --select lowest to make that choice without an interactive prompt.
Autofix is disabled when the $CI environment variable is set. It may run the package manager’s install command to update a lockfile; --no-install disables that step. Treat the lockfile as part of the change and inspect it before merging.
For findings that reflect intentional differences rather than mistakes, use Sherif’s ignore controls instead of repeatedly fixing them. The CLI supports ignoring rules, packages, and dependencies. The same types of controls are available in root package.json configuration.
Rank #4
Configure Sherif when defaults need adjustment
You can pass options on the command line or set a sherif field in the root package.json. Documented keys are fix, select, noInstall, failOnWarnings, ignoreDependency, ignorePackage, and ignoreRule. CLI arguments take precedence over file configuration, which is useful when a CI command needs to override a local default.
Decide whether Sherif fits your workspace
Sherif is a practical fit when your team wants consistent dependency versions, workspace definitions, and root-package conventions checked automatically. Before adopting it, compare its documented rules with your actual monorepo policy: decide which dependencies should stay aligned, whether root-package rules match your setup, and whether warnings should block CI.
Best Value
Also agree on how fixes are reviewed and which exceptions are intentional. Ignore controls let teams preserve deliberate differences without abandoning checks across the rest of the workspace. Sherif’s documentation establishes its checks and controls, but does not provide benchmark results for comparing it with other tools.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

