如何配置VS Code/ESLint:默认用settings.json规则,仅package.json精确覆盖时例外
解决方案
核心问题在于ESLint的配置优先级:项目级配置(比如package.json里的eslintConfig)会覆盖VS Code的全局用户设置,哪怕项目里的rules是空的,ESLint也会加载基础配置(比如Vue官方的ESLint插件预设)中的规则,而非回退到你的VS Code全局自定义规则。
要实现「全局规则为默认,仅当项目精确覆盖对应规则时才使用项目配置」的效果,可按以下步骤操作:
1. 调整VS Code的ESLint全局设置
修改settings.json,启用全局规则的强制注入,确保它能覆盖项目基础预设,但又会被项目的精确规则设置覆盖:
{ "eslint.useFlatConfig": false, "eslint.rules.customizations": [ { "rule": "no-unused-vars", "severity": "warn" } ], "eslint.overrideConfig": { "rules": { "no-unused-vars": "warn" } } }
其中eslint.overrideConfig会将指定规则强制注入所有项目的ESLint配置,优先级高于项目的基础预设;但如果项目的package.json里明确设置了该规则(比如"no-unused-vars": "error"),项目配置会覆盖这个全局override。
2. 适配Vue项目的ESLint预设
如果你使用Vue官方的@vue/eslint-config-standard这类预设,它本身包含no-unused-vars的error级规则。上述全局配置会直接覆盖这个预设规则,若项目需要修改该规则,只需在package.json的eslintConfig.rules里明确设置即可。
3. 验证效果
- 重启VS Code后,打开未配置
no-unused-vars的Vue项目,编辑器和本地服务都应将该规则设为warn级别。 - 若在项目的
package.json中添加"no-unused-vars": "error",项目会优先使用这个error级设置,覆盖全局规则。
内容的提问来源于stack exchange,提问作者Mike Willis
相关产品推荐
相关产品推荐

