Skip to main content

β™» Migration guide

If you are setting up Sheriff in an already established codebase, follow these steps:

  1. Start by running the npm init @sherifforg/config command and follow the advice it prints in the console
  2. Ensure the only ESLint config file present in any workspace package is eslint.config.js
  3. If you want to keep your existing custom rules on top of Sheriff, ensure you put them after the sheriff function, so that they override it. Refer to the configuration instructions
  4. (Recommended) Uninstall packages that Sheriff already incorporates out-of-the-box

Progressive adoption story​

In massive codebases, it can be troublesome to adapt to all these rules all at once. It is often preferable to progressively fix the errors at your own pace with atomic commits and focused PRs.
You can use this method by leveraging two techniques:

  • Add a files key to the sheriffOptions object in your eslint.config.js. The value accepts an array of filepaths, and supports minimatch syntax. Only the matching files found in this array will be linted

    See the example below:

eslint.config.js
import sheriff from "eslint-config-sheriff";
import { defineFlatConfig } from "eslint-define-config";

const sheriffOptions = {
files: ["src/**/*"], // Only the files in the src directory will be linted.
react: false,
next: false,
astro: false,
lodash: false,
remeda: false,
playwright: false,
jest: false,
vitest: false,
};

export default defineFlatConfig([...sheriff(sheriffOptions)]);
info

By default, the automatic setup process will not add the files in the object and every JS/TS file will be linted. Only use this if you specifically want to lint only a subsection of the codebase.