For AI agents: the complete documentation index is available at https://vite-plugin-eslint2.modyqyw.top/zh/llms.txt, the full documentation bundle is available at https://vite-plugin-eslint2.modyqyw.top/zh/llms-full.txt, and this page is available as Markdown at https://vite-plugin-eslint2.modyqyw.top/zh/guide/migrate-from-vite-plugin-eslint.md.
  • 简体中文
  • 从 vite-plugin-eslint 迁移

    vite-plugin-eslint2 从 gxmari007/vite-plugin-eslint 分叉出来,一直在维护,加了新功能、支持更多版本、修了问题。下面是把项目迁过来的步骤。

    安装

    npm uninstall vite-plugin-eslint
    npm install vite-plugin-eslint2 -D

    换导入

    - import eslint from 'vite-plugin-eslint'
    + import eslint from 'vite-plugin-eslint2'

    选项变化

    默认值

    选项vite-plugin-eslintvite-plugin-eslint2
    cachefalsetrue
    include['**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx', '**/*.vue', '**/*.svelte']['src/**/*.{js,jsx,ts,tsx,vue,svelte}']
    exclude['**/node_modules/**']['node_modules', 'virtual:']

    cache 现在默认开着。include 限定在 src/,源文件在别处就自己改。

    去掉的选项

    选项替代
    failOnErroremitErrorAsWarning,设成 true 把错误降级成警告,构建不中断
    failOnWarningemitWarningAsError,设成 true 把警告升级成错误,构建失败

    新增选项

    选项默认值说明
    testfalse是否在 test 模式(Vitest)下运行 ESLint
    devtrue是否在 vite dev 下运行 ESLint
    buildfalse是否在 vite build 下运行 ESLint
    cacheLocation'.eslintcache'缓存文件路径
    eslintPath'eslint'自定义 ESLint 路径
    lintInWorkerfalse在 worker 线程里校验
    lintOnStartfalse启动时把匹配到的文件全跑一遍
    lintDirtyOnlytruebuildStart 之外只校验改过的文件
    emitErrorAsWarningfalse把错误当警告输出
    emitWarningAsErrorfalse把警告当错误输出

    类型变化

    选项vite-plugin-eslintvite-plugin-eslint2
    formatterstring | (results) => stringstring

    formatter 不再接受函数,只能传格式化器的名称或路径。

    cacheLocation

    vite-plugin-eslint 默认是 Vite 的 cacheDir + '/.eslintcache'。vite-plugin-eslint2 默认是项目根目录的 .eslintcache,也就是 ESLint 自己的默认值。

    行为变化

    apply 钩子

    vite-plugin-eslint 什么模式下都跑。vite-plugin-eslint2 用 apply 决定什么时候生效:

    场景vite-plugin-eslintvite-plugin-eslint2
    vite dev运行运行(dev: true)
    vite build运行不运行(build: false)
    Vitest运行不运行(test: false)

    要在构建时校验,设 build: true:

    eslint({ build: true })

    虚拟模块

    vite-plugin-eslint2 总是忽略虚拟模块:virtual:、\0 前缀,以及不带 / 的模块 ID。你不用再手动排除。

    版本兼容

    vite-plugin-eslintvite-plugin-eslint2
    Vitev2 到 v3v2 到 v8
    ESLintv7v7 到 v10
    Node—>= 18

    迁移之后

    // vite.config.ts
    import { defineConfig } from "vite";
    import eslint from "vite-plugin-eslint2";
    
    export default defineConfig({
      plugins: [eslint()],
    });

    要在构建时校验(旧插件的默认行为):

    export default defineConfig({
      plugins: [eslint({ build: true })],
    });

    日常开发可以从这个配置开始:

    export default defineConfig({
      plugins: [eslint({
        fix: true,
        lintInWorker: true,
        lintOnStart: true,
      })],
    });