发布于2026-07-08 阅读(0)
扫一扫,手机访问
先聊一个很多开发者在配置ESLint自定义插件时容易掉进去的坑:全局安装插件、VSCode也装了插件,结果保存文件时什么反应都没有。问题出在哪?其实真正执行检查任务的,是项目本地node_modules/.bin/eslint里的那个二进制文件,VSCode的ESLint扩展只是一个“调度器”。所以,第一步必须确认项目本地已经正确安装了ESLint和你的自定义规则插件,全局安装或只装VSCode插件是行不通的。

怎么验证?最简单直接的方法就是跑一句命令:npx eslint --version。如果看到版本号输出,说明ESLint已就位;如果报“command not found”,那就赶紧执行npm install --sa ve-dev eslint把它装上。自定义规则插件(比如@myorg/eslint-plugin-foo)也必须放在devDependencies里,别只塞到dependencies就跑了——ESLint在开发阶段是识别不到运行时依赖的。还要检查node_modules/@myorg/eslint-plugin-foo这个目录是否存在,如果用pnpm特别容易因hoist或link路径不对而静默失败。最后,检查.eslintrc.cjs里插件规则名的引用,比如"@myorg/foo/no-bare-strings": "error",拼写、大小写、前缀,一个字符都不能错。
ESLint不会主动扫描所有npm包然后自己猜你要用哪个插件——你得在配置里明确声明。这里的关键是plugins字段:它接受一个字符串数组,而且包名默认不带eslint-plugin-前缀。举个例子,如果你的插件包名是@myorg/eslint-plugin-foo,那plugins里就写["@myorg/foo"];如果包名是my-eslint-plugin,那就写["my-eslint-plugin"]。然后别忘了在extends或rules里实际启用规则,不然插件即使加载了也不会产生任何效果,比如"@myorg/foo/no-bare-strings": "error"。还有一个容易漏掉的地方:如果自定义规则依赖额外的解析器(比如TypeScript),必须同步配好parser和parserOptions,否则规则可能会静默跳过,连个错误提示都不会给你。
很多老教程里提到的eslint.autoFixOnSa ve已经废弃了,靠它什么都修不了。现在真正起作用的只有editor.codeActionsOnSa ve。具体要这样设置:先把editor.formatOnSa ve关掉,否则Prettier或Vetur会抢在ESLint之前重新排版,覆盖掉修复结果。然后打开editor.codeActionsOnSa ve: { "source.fixAll.eslint": true }——这是当前唯一可靠的自动修复触发方式。再补充一个eslint.format.enable: true,让ESLint在支持的文件类型(.js、.ts等)上接管格式化请求,注意它只对可修复的规则介入,不会做全量重排。最后,eslint.options.extensions必须包含你要处理的所有后缀,比如[".js", ".ts", ".jsx", ".tsx"],漏掉.tsx的话,TSX文件就直接被忽略了。
当所有配置都看起来没问题,但就是不生效时,千万别只看界面报不报错——很多失败是静默跳过的。第一步,按Ctrl+Shift+P打开命令面板,输入Developer: Toggle Developer Tools,切到Console标签页,然后保存文件,看有没有ESLint: Failed to load plugin这类错误。第二步,在终端运行npx eslint src/index.js --debug,观察插件是否被成功resolve、规则是否注册进了ESLint的内部规则池,以及有没有出现Rule 'xxx' was not found的警告。第三步,如果你用的是多根工作区(multi-root workspace),每个子文件夹都必须有自己的.eslintrc.cjs,父级的配置不会自动继承。第四步,如果项目中用了eslint-config-prettier,务必把它放在extends数组的最末尾,否则它可能禁用掉你自定义的规则。最后还有一个最容易被忽略的细节:自定义插件的规则文件(rules/xxx.js)里的meta.fixable字段必须设置为"code"或"whitespace",否则即使规则触发了,source.fixAll.eslint也不会尝试修复它——VSCode不会告诉你这个字段缺失,只会安静地跳过。把这几步走一遍,基本就能定位到问题所在了。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8