寻求ESLint规则:强制命名导入单独占一行
实现ESLint强制命名导入单独占一行的配置
你需要的是强制多个命名导入必须各自单独占一行,同时允许单个命名导入可以是单行或多行格式。object-curly-newline确实做不到这点,它只控制大括号的换行逻辑,管不了内部成员的换行。
你可以通过两个ESLint核心规则的组合来实现需求:
1. object-property-newline
这个规则强制对象的每个属性(这里对应导入的命名成员)单独占一行,直接禁止多个成员挤在同一行的情况。配置如下:
"object-property-newline": ["error", { "allowAllPropertiesOnSameLine": false }]
2. object-curly-newline
配合这个规则控制导入语句大括号的换行逻辑,确保当有2个及以上命名导入时,大括号必须换行;单个导入则允许单行或多行的灵活格式。配置:
"object-curly-newline": ["error", { "ImportDeclaration": { "multiline": true, "minProperties": 2 }, "ExportDeclaration": "off" // 不需要管控导出语句的话可以关闭 }]
完整配置示例
把两个规则加到你的ESLint配置文件里:
{ "rules": { "object-property-newline": ["error", { "allowAllPropertiesOnSameLine": false }], "object-curly-newline": ["error", { "ImportDeclaration": { "multiline": true, "minProperties": 2 } }] } }
验证效果
- 符合要求的格式都会通过检查:
// Valid import { x, y, z } from './foo'; import { x } from './foo'; import { x } from './foo'; - 禁止的格式会直接报错:
// Invalid import { x, y, z } from './foo'; import { x, y, z } from './foo';
内容的提问来源于stack exchange,提问作者megawac
相关产品推荐
相关产品推荐

