Me gustaría hacer cumplir llaves para interruptores en JS, posiblemente con ESLint o Prettier. ¿Conoce alguna configuración relacionada, o si no es eso, entonces alguna otra herramienta de formateo o pelusa?
Probé la regla ESLint curly establecida en "all" , pero no se compañó con mis casos de cambio sin rizado.
Hay un complemento ESLint de cambio de caso , pero no he encontrado tal regla en su documento, ni en su código fuente.
Ejemplo
Equivocado:
switch (foo) { case "bar": return 1; case "baz": return 2; default: return 0; }Correcto:
switch (foo) { case "bar": { return 1; } case "baz": { return 2; } default: { return 0; } }La regla switch-braces en el siguiente repositorio de reglas personalizadas de eslint parece ser la que está buscando: https://github.com/justinanastos/eslint-plugin-justinanastos/blob/master/docs/rules/switch-braces. Maryland
Puedes darle una oportunidad.
Puede probar la regla 'sin sintaxis restringida' con dicho selector .
Con salida detallada (cada elemento secundario sin bloque de un caso se notifica como error):
'no-restricted-syntax': ['error', { 'selector': 'SwitchCase > *.consequent[type!="BlockStatement"]', 'message': 'Switch cases without blocks are disallowed.' }, ], Si :has es compatible con su analizador, puede probar este, pero puede tener informes de falsos positivos: dado que los selectores secundarios (relativos) actualmente parecen no estar permitidos en :has , los nodos .consequent no bloque descendientes pueden arrojar.
'no-restricted-syntax': ['error', { 'selector': 'SwitchCase:has(*.consequent[type!="BlockStatement"])', 'message': 'Switch cases without blocks are disallowed.' }, ],*Esto se aplica a eslint sin complementos.
La regla del curly no se aplica a los bloques en los casos de cambio. Desafortunadamente, no existe una buena regla que haga lo que necesita. Puede sugerir la regla (o editar a la regla curva) aquí https://github.com/eslint/eslint/issues .