Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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-versions flags different versions of a dependency across the monorepo.
  • unsync-similar-dependencies flags related packages that are expected to stay in sync within a package, such as react and react-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.json file.
  • 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

  • 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.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

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.

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.

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.