jenseng / eslint-plugin-remix-react-routes

Validate routes referenced by <Link> and friends in a Remix app
ISC License
36 stars 4 forks source link

eslint-plugin-remix-react-routes

Validate routes referenced by <Link> and friends in a Remix app.

Installation

Remix apps generally have ESLint pre-configured, but if not you'll want to set it up:

npm i eslint --save-dev

Next, install eslint-plugin-remix-react-routes:

npm install eslint-plugin-remix-react-routes --save-dev

If your app uses TypeScript, you're encouraged to also configure typed linting (and set up typescript-eslint while you're at it!). This allows the plugin to fully leverage the type system when evaluating route expressions. To enable typed linting:

npm install @typescript-eslint/parser --save-dev

And add something along these lines to your .eslintrc.js:

module.exports = {
  // ...
  parser: "@typescript-eslint/parser",
  parserOptions: {
    project: "./tsconfig.json",
    tsconfigRootDir: __dirname,
  },
};

Configurations

Most apps should extend from one of the following configurations:

Add something like this to your .eslintrc.js:

module.exports = {
  // ...
  extends: [
    // ...
    "plugin:remix-react-routes/recommended",
  ],
};

You can also override any config rules to meet your needs:

module.exports = {
  // ...
  rules: {
    // ...
    "remix-react-routes/no-relative-paths": [
      // downgrade to a warning
      "warn",
      // enable this check in route components
      { enforceInRouteComponents: true },
    ],
  },
};

Supported Rules