框架
版本

ESLint 插件 Router

TanStack Router 自带一个 ESLint 插件。此插件用于强制执行最佳实践并帮助您避免常见错误。

安装

该插件是一个独立的包,您需要安装它

sh
npm install -D @tanstack/eslint-plugin-router
npm install -D @tanstack/eslint-plugin-router

sh
pnpm add -D @tanstack/eslint-plugin-router
pnpm add -D @tanstack/eslint-plugin-router

sh
yarn add -D @tanstack/eslint-plugin-router
yarn add -D @tanstack/eslint-plugin-router

sh
bun add -D @tanstack/eslint-plugin-router
bun add -D @tanstack/eslint-plugin-router

扁平配置 (eslint.config.js)

ESLint 9.0 的发布引入了一种使用扁平配置格式配置 ESLint 的新方法。这种新格式更灵活,允许您以比传统 .eslintrc 格式更精细的方式配置 ESLint。TanStack Router ESLint 插件支持这种新格式,并提供了一个推荐配置,您可以使用它来启用插件的所有推荐规则。

要启用我们插件的所有推荐规则,请添加以下配置

js
// eslint.config.js
import pluginRouter from '@tanstack/eslint-plugin-router'

export default [
  ...pluginRouter.configs['flat/recommended'],
  // Any other config...
]
// eslint.config.js
import pluginRouter from '@tanstack/eslint-plugin-router'

export default [
  ...pluginRouter.configs['flat/recommended'],
  // Any other config...
]

自定义扁平配置设置

或者,您可以加载插件并仅配置您想要使用的规则

js
// eslint.config.js
import pluginRouter from '@tanstack/eslint-plugin-router'

export default [
  {
    plugins: {
      '@tanstack/router': pluginRouter,
    },
    rules: {
      '@tanstack/router/create-route-property-order': 'error',
    },
  },
  // Any other config...
]
// eslint.config.js
import pluginRouter from '@tanstack/eslint-plugin-router'

export default [
  {
    plugins: {
      '@tanstack/router': pluginRouter,
    },
    rules: {
      '@tanstack/router/create-route-property-order': 'error',
    },
  },
  // Any other config...
]

传统配置 (.eslintrc)

在 ESLint 9.0 发布之前,配置 EsLint 最常见的方式是使用 .eslintrc 文件。TanStack Router ESLint 插件仍然支持这种配置方法。

要启用我们插件的所有推荐规则,请在 extends 中添加 plugin:@tanstack/eslint-plugin-router/recommended

json
{
  "extends": ["plugin:@tanstack/eslint-plugin-router/recommended"]
}
{
  "extends": ["plugin:@tanstack/eslint-plugin-router/recommended"]
}

自定义传统配置设置

或者,将 @tanstack/eslint-plugin-router 添加到 plugins 部分,并配置您想要使用的规则

json
{
  "plugins": ["@tanstack/eslint-plugin-router"],
  "rules": {
    "@tanstack/router/create-route-property-order": "error"
  }
}
{
  "plugins": ["@tanstack/eslint-plugin-router"],
  "rules": {
    "@tanstack/router/create-route-property-order": "error"
  }
}

规则

TanStack Router ESLint 插件中提供了以下规则

与其他 ESLint 插件的冲突

如果您安装了其他 ESLint 插件,它们可能包含与此插件冲突的规则。如果发生这种情况,您需要进行一些调整,以使这些插件能够协同工作。

typescript-eslint

默认情况下,recommended-type-checkedstrict-type-checked 规则集中启用了 @typescript-eslint/only-throw-error 规则,该规则禁止抛出非 Error 值作为异常,这被认为是一种良好实践。

为确保它不与 TanStack Router 冲突,您应该将 redirect 添加到允许作为可抛出对象的列表中。

json
{
  "rules": {
    "@typescript-eslint/only-throw-error": [
      "error",
      {
        "allow": [
          {
            "from": "package",
            "package": "@tanstack/router-core",
            "name": "Redirect"
          }
        ]
      }
    ]
  }
}
{
  "rules": {
    "@typescript-eslint/only-throw-error": [
      "error",
      {
        "allow": [
          {
            "from": "package",
            "package": "@tanstack/router-core",
            "name": "Redirect"
          }
        ]
      }
    ]
  }
}
我们的合作伙伴
Code Rabbit
Netlify
Neon
Clerk
Convex
Sentry
订阅 Bytes

您的每周 JavaScript 资讯。每周一免费发送给超过 10 万开发者。

Bytes

无垃圾邮件。您可以随时取消订阅。

订阅 Bytes

您的每周 JavaScript 资讯。每周一免费发送给超过 10 万开发者。

Bytes

无垃圾邮件。您可以随时取消订阅。