Prettier ESLint:能否强制引号既避免转义又保持一致?
解决方案
你遇到的是Prettier默认行为导致的混合引号问题——当开启singleQuote: true时,Prettier会默认启用avoidEscape: true,自动为不含字面单引号的字符串切换为单引号(避免不必要的转义),但含单引号的字符串会保留双引号,从而出现混合。以下是两种符合你需求的实现方案:
方案一:统一使用单引号(需转义字面单引号)
如果坚持默认单引号风格,可强制所有字符串使用单引号,即使需要转义内部的单引号,确保引号一致:
- 修改Prettier配置文件(如
.prettierrc或prettier.config.js):
{ "singleQuote": true, "avoidEscape": false }
- 同步ESLint规则(避免冲突):
在.eslintrc中添加:
{ "rules": { "quotes": ["error", "single", { "avoidEscape": false }] } }
配置后,你的数组会被格式化为:
['R\\'', 'L', 'U', 'D\\'', 'F\\'', 'B']
方案二:统一使用双引号(无需转义字面单引号)
如果接受统一双引号,既不需要转义内部单引号,又能保持引号一致,这是更贴合你原数组写法的方案:
- 修改Prettier配置:
{ "singleQuote": false }
- 同步ESLint规则:
{ "rules": { "quotes": ["error", "double", { "avoidEscape": true }] } }
配置后,你的数组会保持全双引号格式,不会出现混合:
["R'", "L", "U", "D'", "F'", "B"]
关键说明
Prettier的avoidEscape选项是导致混合引号的核心:默认值为true时,会优先避免转义而切换引号类型;设为false则强制遵循singleQuote的配置,哪怕需要转义。
内容的提问来源于stack exchange,提问作者Justin
相关产品推荐
相关产品推荐

