配置VSCode与ts-standard时的缩进问题求助
解决ts-standard与VSCode自动格式化的缩进规则冲突问题
问题分析
当前配置下,VSCode保存时会将装饰器和字段统一缩进为2个空格,但ts-standard的@typescript-eslint/indent规则要求字段缩进4个空格,同时你希望装饰器保持2个空格缩进,导致规则冲突报错。
解决方案
1. 调整VSCode工作区配置,确保使用ESLint格式化并对齐缩进设置
修改项目的.vscode/settings.json,配置如下:
{ "standard.engine": "ts-standard", // 指定ESLint为默认格式化工具 "editor.defaultFormatter": "dbaeumer.vscode-eslint", "editor.formatOnSave": true, // 开启保存时自动修复ESLint错误 "editor.codeActionsOnSave": { "source.fixAll.eslint": true }, // 设置编辑器基础缩进为4个空格 "editor.insertSpaces": true, "editor.tabSize": 4 }
2. 自定义ESLint规则,允许装饰器使用2个空格缩进
在项目根目录创建或修改.eslintrc.json,继承ts-standard规则并覆盖缩进配置:
{ "extends": ["ts-standard"], "rules": { "@typescript-eslint/indent": [ "error", 4, { // 让装饰器缩进比目标元素少一个级别(即2个空格,基于基础4空格的一半) "decoratorIndentation": "outer", "ignoredNodes": [] } ] } }
3. 验证配置
保存上述文件后,打开你的TypeScript文件并保存,此时字段会自动缩进为4个空格,装饰器保持2个空格缩进,同时不会触发@typescript-eslint/indent错误。
关键说明
editor.defaultFormatter指定用ESLint格式化,避免VSCode内置格式化工具或其他插件与ts-standard规则冲突。decoratorIndentation: "outer"配置会让装饰器的缩进级别比它修饰的类/属性少一级,结合基础4空格的设置,正好实现装饰器2空格、字段4空格的需求。
内容的提问来源于stack exchange,提问作者agusgambina
相关产品推荐
相关产品推荐

