From f3f335df6dca943e1fbfc0509d56912b27cc45c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damian=20G=C5=82owala?= Date: Mon, 15 Apr 2024 13:47:04 +0200 Subject: [PATCH] feat(eslint-config): add Nuxt-aware `vue/multiline-html-element-content-newline` rule (#391) Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Anthony Fu --- packages/eslint-config/src/flat/configs/vue.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/eslint-config/src/flat/configs/vue.ts b/packages/eslint-config/src/flat/configs/vue.ts index 04ae42a2..65f2fdf7 100644 --- a/packages/eslint-config/src/flat/configs/vue.ts +++ b/packages/eslint-config/src/flat/configs/vue.ts @@ -7,6 +7,9 @@ import type { FlatConfigItem } from 'eslint-flat-config-utils' import type { NuxtESLintConfigOptions } from '../types' import { removeUndefined, resolveOptions } from '../utils' +// imported from 'eslint-plugin-vue/lib/utils/inline-non-void-elements.json' +const INLINE_ELEMENTS = ['a', 'abbr', 'audio', 'b', 'bdi', 'bdo', 'canvas', 'cite', 'code', 'data', 'del', 'dfn', 'em', 'i', 'iframe', 'ins', 'kbd', 'label', 'map', 'mark', 'noscript', 'object', 'output', 'picture', 'q', 'ruby', 's', 'samp', 'small', 'span', 'strong', 'sub', 'sup', 'svg', 'time', 'u', 'var', 'video'] + export default function vue(options: NuxtESLintConfigOptions): FlatConfigItem[] { const resolved = resolveOptions(options) const hasTs = resolved.features.typescript !== false @@ -111,6 +114,11 @@ export default function vue(options: NuxtESLintConfigOptions): FlatConfigItem[] 'vue/require-default-prop': 'off', 'vue/space-in-parens': ['error', 'never'], 'vue/template-curly-spacing': 'error', + 'vue/multiline-html-element-content-newline': ['error', { + ignoreWhenEmpty: true, + ignores: ['pre', 'textarea', 'router-link', 'RouterLink', 'nuxt-link', 'NuxtLink', 'u-link', 'ULink', ...INLINE_ELEMENTS], + allowEmptyLines: false, + }], } : { // Disable Vue's default stylistic rules when stylistic is not enabled