From 28ffe2157794b09d19b03f7e1ffac21d6eb74032 Mon Sep 17 00:00:00 2001 From: IWANABETHATGUY <974153916@qq.com> Date: Wed, 18 Mar 2020 13:57:12 +0800 Subject: [PATCH 01/14] feat: init commit --- docs/rules/README.md | 1 + .../new-line-between-multi-line-property.md | 51 +++++++++++++ lib/configs/no-layout-rules.js | 1 + lib/configs/recommended.js | 1 + lib/index.js | 1 + .../new-line-between-multi-line-property.js | 56 ++++++++++++++ .../new-line-between-multi-line-property.js | 74 +++++++++++++++++++ 7 files changed, 185 insertions(+) create mode 100644 docs/rules/new-line-between-multi-line-property.md create mode 100644 lib/rules/new-line-between-multi-line-property.js create mode 100644 tests/lib/rules/new-line-between-multi-line-property.js diff --git a/docs/rules/README.md b/docs/rules/README.md index ab1f5b220..89e4b8823 100644 --- a/docs/rules/README.md +++ b/docs/rules/README.md @@ -118,6 +118,7 @@ Enforce all the rules in this category, as well as all higher priority rules, wi | Rule ID | Description | | |:--------|:------------|:---| | [vue/attributes-order](./attributes-order.md) | enforce order of attributes | :wrench: | +| [vue/new-line-between-multi-line-property](./new-line-between-multi-line-property.md) | enforce new lines between multi-line properties in Vue components | :wrench: | | [vue/no-v-html](./no-v-html.md) | disallow use of v-html to prevent XSS attack | | | [vue/order-in-components](./order-in-components.md) | enforce order of properties in components | :wrench: | | [vue/this-in-template](./this-in-template.md) | disallow usage of `this` in template | | diff --git a/docs/rules/new-line-between-multi-line-property.md b/docs/rules/new-line-between-multi-line-property.md new file mode 100644 index 000000000..7f44cf73f --- /dev/null +++ b/docs/rules/new-line-between-multi-line-property.md @@ -0,0 +1,51 @@ +--- +pageClass: rule-details +sidebarDepth: 0 +title: vue/new-line-between-multi-line-property +description: enforce new lines between multi-line properties in Vue components +--- +# vue/new-line-between-multi-line-property +> enforce new lines between multi-line properties in Vue components + +- :gear: This rule is included in `"plugin:vue/recommended"`. +- :wrench: The `--fix` option on the [command line](https://eslint.org/docs/user-guide/command-line-interface#fixing-problems) can automatically fix some of the problems reported by this rule. + +Please describe the origin of the rule here. + + +## Rule Details + +This rule aims to... + +Examples of **incorrect** code for this rule: + +```js + +// fill me in + +``` + +Examples of **correct** code for this rule: + +```js + +// fill me in + +``` + +### Options + +If there are any options, describe them here. Otherwise, delete this section. + +## When Not To Use It + +Give a short description of when it would be appropriate to turn off this rule. + +## Further Reading + +If there are other links that describe the issue this rule addresses, please include them here in a bulleted list. + +## :mag: Implementation + +- [Rule source](https://github.com/vuejs/eslint-plugin-vue/blob/master/lib/rules/new-line-between-multi-line-property.js) +- [Test source](https://github.com/vuejs/eslint-plugin-vue/blob/master/tests/lib/rules/new-line-between-multi-line-property.js) diff --git a/lib/configs/no-layout-rules.js b/lib/configs/no-layout-rules.js index e45c080bc..f82581251 100644 --- a/lib/configs/no-layout-rules.js +++ b/lib/configs/no-layout-rules.js @@ -22,6 +22,7 @@ module.exports = { 'vue/max-len': 'off', 'vue/multiline-html-element-content-newline': 'off', 'vue/mustache-interpolation-spacing': 'off', + 'vue/new-line-between-multi-line-property': 'off', 'vue/no-multi-spaces': 'off', 'vue/no-spaces-around-equal-signs-in-attribute': 'off', 'vue/object-curly-spacing': 'off', diff --git a/lib/configs/recommended.js b/lib/configs/recommended.js index 51bcc2e8c..29d899c09 100644 --- a/lib/configs/recommended.js +++ b/lib/configs/recommended.js @@ -7,6 +7,7 @@ module.exports = { extends: require.resolve('./strongly-recommended'), rules: { 'vue/attributes-order': 'warn', + 'vue/new-line-between-multi-line-property': 'warn', 'vue/no-v-html': 'warn', 'vue/order-in-components': 'warn', 'vue/this-in-template': 'warn' diff --git a/lib/index.js b/lib/index.js index 02e65ba96..98f2fae90 100644 --- a/lib/index.js +++ b/lib/index.js @@ -36,6 +36,7 @@ module.exports = { 'multiline-html-element-content-newline': require('./rules/multiline-html-element-content-newline'), 'mustache-interpolation-spacing': require('./rules/mustache-interpolation-spacing'), 'name-property-casing': require('./rules/name-property-casing'), + 'new-line-between-multi-line-property': require('./rules/new-line-between-multi-line-property'), 'no-async-in-computed-properties': require('./rules/no-async-in-computed-properties'), 'no-boolean-default': require('./rules/no-boolean-default'), 'no-confusing-v-for-v-if': require('./rules/no-confusing-v-for-v-if'), diff --git a/lib/rules/new-line-between-multi-line-property.js b/lib/rules/new-line-between-multi-line-property.js new file mode 100644 index 000000000..6ec7b7200 --- /dev/null +++ b/lib/rules/new-line-between-multi-line-property.js @@ -0,0 +1,56 @@ +/** + * @fileoverview Enforce new lines between multi-line properties in Vue components. + * @author IWANABETHATGUY + */ +'use strict' + +// ------------------------------------------------------------------------------ +// Rule Definition +// ------------------------------------------------------------------------------ + +module.exports = { + meta: { + type: 'layout', + docs: { + description: 'enforce new lines between multi-line properties in Vue components', + category: 'recommended', + url: 'https://eslint.vuejs.org/rules/new-line-between-multi-line-property.html' + }, + fixable: 'code', // or "code" or "whitespace" + schema: [ + // fill in your schema + ] + }, + + create: function (context) { + // variables should be defined here + + // ---------------------------------------------------------------------- + // Helpers + // ---------------------------------------------------------------------- + + // any helper functions should go here or else delete this section + + // ---------------------------------------------------------------------- + // Public + // ---------------------------------------------------------------------- + return { + ObjectExpression (node) { + const properties = node.properties + for (let i = 1; i < properties.length; i++) { + const cur = properties[i] + const pre = properties[i - 1] + if (pre.loc.end.line - pre.loc.start.line >= 1 && cur.loc.start.line - pre.loc.end.line <= 1) { + context.report({ + node, + message: 'Enforce new lines between multi-line properties in Vue components.', + fix (fixer) { + return fixer.insertTextBefore(cur, '\n' + ' '.repeat(cur.loc.start.column)) + } + }) + } + } + } + } + } +} diff --git a/tests/lib/rules/new-line-between-multi-line-property.js b/tests/lib/rules/new-line-between-multi-line-property.js new file mode 100644 index 000000000..39a48bf68 --- /dev/null +++ b/tests/lib/rules/new-line-between-multi-line-property.js @@ -0,0 +1,74 @@ +/** + * @fileoverview Enforce new lines between multi-line properties in Vue components. + * @author IWANABETHATGUY + */ +'use strict' + +// ------------------------------------------------------------------------------ +// Requirements +// ------------------------------------------------------------------------------ + +const rule = require('../../../lib/rules/new-line-between-multi-line-property') +const RuleTester = require('eslint').RuleTester +const ruleTester = new RuleTester({ + parser: require.resolve('vue-eslint-parser'), + parserOptions: { ecmaVersion: 2015, sourceType: 'module' } +}) + +// ------------------------------------------------------------------------------ +// Tests +// ------------------------------------------------------------------------------ + +ruleTester.run('new-line-between-multi-line-property', rule, { + valid: [ + // give me some code that won't trigger a warning + ], + + invalid: [ + { + filename: 'test.vue', + code: ` + + `, + output: ` + + `, + errors: [ + 'Enforce new lines between multi-line properties in Vue components.' + ] + } + ] +}) From dcce787d49daa958c613c86ffb2e53c38893e2e3 Mon Sep 17 00:00:00 2001 From: IWANABETHATGUY <974153916@qq.com> Date: Wed, 18 Mar 2020 17:29:13 +0800 Subject: [PATCH 02/14] feat: add test, make rule configurable --- docs/rules/README.md | 2 +- .../new-line-between-multi-line-property.md | 2 +- lib/configs/recommended.js | 1 - lib/configs/strongly-recommended.js | 1 + .../new-line-between-multi-line-property.js | 43 +-- .../new-line-between-multi-line-property.js | 270 +++++++++++++++++- 6 files changed, 297 insertions(+), 22 deletions(-) diff --git a/docs/rules/README.md b/docs/rules/README.md index 89e4b8823..2f010a60b 100644 --- a/docs/rules/README.md +++ b/docs/rules/README.md @@ -95,6 +95,7 @@ Enforce all the rules in this category, as well as all higher priority rules, wi | [vue/multiline-html-element-content-newline](./multiline-html-element-content-newline.md) | require a line break before and after the contents of a multiline element | :wrench: | | [vue/mustache-interpolation-spacing](./mustache-interpolation-spacing.md) | enforce unified spacing in mustache interpolations | :wrench: | | [vue/name-property-casing](./name-property-casing.md) | enforce specific casing for the name property in Vue components | :wrench: | +| [vue/new-line-between-multi-line-property](./new-line-between-multi-line-property.md) | enforce new lines between multi-line properties in Vue components | :wrench: | | [vue/no-multi-spaces](./no-multi-spaces.md) | disallow multiple spaces | :wrench: | | [vue/no-spaces-around-equal-signs-in-attribute](./no-spaces-around-equal-signs-in-attribute.md) | disallow spaces around equal signs in attribute | :wrench: | | [vue/no-template-shadow](./no-template-shadow.md) | disallow variable declarations from shadowing variables declared in the outer scope | | @@ -118,7 +119,6 @@ Enforce all the rules in this category, as well as all higher priority rules, wi | Rule ID | Description | | |:--------|:------------|:---| | [vue/attributes-order](./attributes-order.md) | enforce order of attributes | :wrench: | -| [vue/new-line-between-multi-line-property](./new-line-between-multi-line-property.md) | enforce new lines between multi-line properties in Vue components | :wrench: | | [vue/no-v-html](./no-v-html.md) | disallow use of v-html to prevent XSS attack | | | [vue/order-in-components](./order-in-components.md) | enforce order of properties in components | :wrench: | | [vue/this-in-template](./this-in-template.md) | disallow usage of `this` in template | | diff --git a/docs/rules/new-line-between-multi-line-property.md b/docs/rules/new-line-between-multi-line-property.md index 7f44cf73f..948974b4b 100644 --- a/docs/rules/new-line-between-multi-line-property.md +++ b/docs/rules/new-line-between-multi-line-property.md @@ -7,7 +7,7 @@ description: enforce new lines between multi-line properties in Vue components # vue/new-line-between-multi-line-property > enforce new lines between multi-line properties in Vue components -- :gear: This rule is included in `"plugin:vue/recommended"`. +- :gear: This rule is included in `"plugin:vue/strongly-recommended"` and `"plugin:vue/recommended"`. - :wrench: The `--fix` option on the [command line](https://eslint.org/docs/user-guide/command-line-interface#fixing-problems) can automatically fix some of the problems reported by this rule. Please describe the origin of the rule here. diff --git a/lib/configs/recommended.js b/lib/configs/recommended.js index 29d899c09..51bcc2e8c 100644 --- a/lib/configs/recommended.js +++ b/lib/configs/recommended.js @@ -7,7 +7,6 @@ module.exports = { extends: require.resolve('./strongly-recommended'), rules: { 'vue/attributes-order': 'warn', - 'vue/new-line-between-multi-line-property': 'warn', 'vue/no-v-html': 'warn', 'vue/order-in-components': 'warn', 'vue/this-in-template': 'warn' diff --git a/lib/configs/strongly-recommended.js b/lib/configs/strongly-recommended.js index 7c32816ce..b7160cf2e 100644 --- a/lib/configs/strongly-recommended.js +++ b/lib/configs/strongly-recommended.js @@ -17,6 +17,7 @@ module.exports = { 'vue/multiline-html-element-content-newline': 'warn', 'vue/mustache-interpolation-spacing': 'warn', 'vue/name-property-casing': 'warn', + 'vue/new-line-between-multi-line-property': 'warn', 'vue/no-multi-spaces': 'warn', 'vue/no-spaces-around-equal-signs-in-attribute': 'warn', 'vue/no-template-shadow': 'warn', diff --git a/lib/rules/new-line-between-multi-line-property.js b/lib/rules/new-line-between-multi-line-property.js index 6ec7b7200..2d036e162 100644 --- a/lib/rules/new-line-between-multi-line-property.js +++ b/lib/rules/new-line-between-multi-line-property.js @@ -3,7 +3,7 @@ * @author IWANABETHATGUY */ 'use strict' - +const _ = require('lodash') // ------------------------------------------------------------------------------ // Rule Definition // ------------------------------------------------------------------------------ @@ -13,39 +13,48 @@ module.exports = { type: 'layout', docs: { description: 'enforce new lines between multi-line properties in Vue components', - category: 'recommended', + category: 'strongly-recommended', url: 'https://eslint.vuejs.org/rules/new-line-between-multi-line-property.html' }, fixable: 'code', // or "code" or "whitespace" schema: [ - // fill in your schema + { + type: 'object', + properties: { + // number of line you want to insert after multi-line property + insertLine: { + type: 'number', + minimum: 1 + }, + minLineOfMultilineProperty: { + type: 'number', + minimum: 2 + } + } + } ] }, create: function (context) { - // variables should be defined here - - // ---------------------------------------------------------------------- - // Helpers - // ---------------------------------------------------------------------- - - // any helper functions should go here or else delete this section - - // ---------------------------------------------------------------------- - // Public - // ---------------------------------------------------------------------- + const insertLine = _.get(context, ['options', '0', 'insertLine'], 1) + const minLineOfMultilineProperty = _.get(context, ['options', '0', 'minLineOfMultilineProperty'], 2) return { ObjectExpression (node) { const properties = node.properties for (let i = 1; i < properties.length; i++) { const cur = properties[i] const pre = properties[i - 1] - if (pre.loc.end.line - pre.loc.start.line >= 1 && cur.loc.start.line - pre.loc.end.line <= 1) { + const lineCountOfPreProperty = pre.loc.end.line - pre.loc.start.line + 1 + const lineCountBetweenCurAndPreProperty = cur.loc.start.line - pre.loc.end.line - 1 + if (lineCountOfPreProperty >= minLineOfMultilineProperty && lineCountBetweenCurAndPreProperty < insertLine) { context.report({ - node, + node: pre, + loc: pre.loc, message: 'Enforce new lines between multi-line properties in Vue components.', fix (fixer) { - return fixer.insertTextBefore(cur, '\n' + ' '.repeat(cur.loc.start.column)) + const firstPosofLine = cur.range[0] - cur.loc.start.column + // this action equal to insert number of line before node + return fixer.replaceTextRange([firstPosofLine, firstPosofLine], '\n'.repeat(insertLine - lineCountBetweenCurAndPreProperty)) } }) } diff --git a/tests/lib/rules/new-line-between-multi-line-property.js b/tests/lib/rules/new-line-between-multi-line-property.js index 39a48bf68..fb2599414 100644 --- a/tests/lib/rules/new-line-between-multi-line-property.js +++ b/tests/lib/rules/new-line-between-multi-line-property.js @@ -21,7 +21,61 @@ const ruleTester = new RuleTester({ ruleTester.run('new-line-between-multi-line-property', rule, { valid: [ - // give me some code that won't trigger a warning + // test good example of proposal https://github.com/vuejs/eslint-plugin-vue/issues/391 + { + filename: 'test.vue', + code: ` + + ` + } ], invalid: [ @@ -59,7 +113,164 @@ ruleTester.run('new-line-between-multi-line-property', rule, { type: Boolean, default: false }, - + + label: String, + icon: String + } + } + + `, + errors: [ + 'Enforce new lines between multi-line properties in Vue components.' + ] + }, + // test bad example of proposal https://github.com/vuejs/eslint-plugin-vue/issues/391 + { + filename: 'test.vue', + code: ` + + `, + output: ` + + `, + errors: [ + 'Enforce new lines between multi-line properties in Vue components.', + 'Enforce new lines between multi-line properties in Vue components.' + ] + }, + // test set insertLine to 2 + { + filename: 'test.vue', + options: [{ insertLine: 2 }], + code: ` + + `, + output: ` + `, errors: [ + 'Enforce new lines between multi-line properties in Vue components.', 'Enforce new lines between multi-line properties in Vue components.' ] + + }, + // test set insertLine and minLineOfMultilineProperty to 5 + { + filename: 'test.vue', + options: [{ insertLine: 2, minLineOfMultilineProperty: 5 }], + code: ` + + `, + output: ` + + `, + errors: [ + { + message: 'Enforce new lines between multi-line properties in Vue components.', + line: 9 + } + ] + } ] }) From df5a3f24521b37b7e74d45eddae3b857095d8bc5 Mon Sep 17 00:00:00 2001 From: IWANABETHATGUY <974153916@qq.com> Date: Wed, 18 Mar 2020 18:00:46 +0800 Subject: [PATCH 03/14] =?UTF-8?q?docs:=20update=20doc=F0=9F=93=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../new-line-between-multi-line-property.md | 72 ++++++++++++++----- .../new-line-between-multi-line-property.js | 39 ++++++---- .../new-line-between-multi-line-property.js | 4 +- 3 files changed, 85 insertions(+), 30 deletions(-) diff --git a/docs/rules/new-line-between-multi-line-property.md b/docs/rules/new-line-between-multi-line-property.md index 948974b4b..ee9fbc237 100644 --- a/docs/rules/new-line-between-multi-line-property.md +++ b/docs/rules/new-line-between-multi-line-property.md @@ -10,36 +10,76 @@ description: enforce new lines between multi-line properties in Vue components - :gear: This rule is included in `"plugin:vue/strongly-recommended"` and `"plugin:vue/recommended"`. - :wrench: The `--fix` option on the [command line](https://eslint.org/docs/user-guide/command-line-interface#fixing-problems) can automatically fix some of the problems reported by this rule. -Please describe the origin of the rule here. - - ## Rule Details -This rule aims to... +This rule aims at enforcing new lines between multi-line properties in Vue components to help readability Examples of **incorrect** code for this rule: -```js - -// fill me in - + + +```vue + ``` -Examples of **correct** code for this rule: + -```js -// fill me in +Examples of **correct** code for this rule: + + +```vue + ``` -### Options - -If there are any options, describe them here. Otherwise, delete this section. + -## When Not To Use It +## Options -Give a short description of when it would be appropriate to turn off this rule. +If there are any options, describe them here. Otherwise, delete this section. ## Further Reading diff --git a/lib/rules/new-line-between-multi-line-property.js b/lib/rules/new-line-between-multi-line-property.js index 2d036e162..4ba715810 100644 --- a/lib/rules/new-line-between-multi-line-property.js +++ b/lib/rules/new-line-between-multi-line-property.js @@ -12,21 +12,23 @@ module.exports = { meta: { type: 'layout', docs: { - description: 'enforce new lines between multi-line properties in Vue components', + description: + 'enforce new lines between multi-line properties in Vue components', category: 'strongly-recommended', - url: 'https://eslint.vuejs.org/rules/new-line-between-multi-line-property.html' + url: + 'https://eslint.vuejs.org/rules/new-line-between-multi-line-property.html' }, - fixable: 'code', // or "code" or "whitespace" + fixable: 'code', // or "code" or "whitespace" schema: [ { type: 'object', properties: { // number of line you want to insert after multi-line property - insertLine: { + 'insert-line': { type: 'number', minimum: 1 }, - minLineOfMultilineProperty: { + 'min-line-of-multiline-property': { type: 'number', minimum: 2 } @@ -36,25 +38,38 @@ module.exports = { }, create: function (context) { - const insertLine = _.get(context, ['options', '0', 'insertLine'], 1) - const minLineOfMultilineProperty = _.get(context, ['options', '0', 'minLineOfMultilineProperty'], 2) + const insertLine = _.get(context, ['options', '0', 'insert-line'], 1) + const minLineOfMultilineProperty = _.get( + context, + ['options', '0', 'min-line-of-multiline-property'], + 2 + ) return { ObjectExpression (node) { const properties = node.properties for (let i = 1; i < properties.length; i++) { const cur = properties[i] const pre = properties[i - 1] - const lineCountOfPreProperty = pre.loc.end.line - pre.loc.start.line + 1 - const lineCountBetweenCurAndPreProperty = cur.loc.start.line - pre.loc.end.line - 1 - if (lineCountOfPreProperty >= minLineOfMultilineProperty && lineCountBetweenCurAndPreProperty < insertLine) { + const lineCountOfPreProperty = + pre.loc.end.line - pre.loc.start.line + 1 + const lineCountBetweenCurAndPreProperty = + cur.loc.start.line - pre.loc.end.line - 1 + if ( + lineCountOfPreProperty >= minLineOfMultilineProperty && + lineCountBetweenCurAndPreProperty < insertLine + ) { context.report({ node: pre, loc: pre.loc, - message: 'Enforce new lines between multi-line properties in Vue components.', + message: + 'Enforce new lines between multi-line properties in Vue components.', fix (fixer) { const firstPosofLine = cur.range[0] - cur.loc.start.column // this action equal to insert number of line before node - return fixer.replaceTextRange([firstPosofLine, firstPosofLine], '\n'.repeat(insertLine - lineCountBetweenCurAndPreProperty)) + return fixer.replaceTextRange( + [firstPosofLine, firstPosofLine], + '\n'.repeat(insertLine - lineCountBetweenCurAndPreProperty) + ) } }) } diff --git a/tests/lib/rules/new-line-between-multi-line-property.js b/tests/lib/rules/new-line-between-multi-line-property.js index fb2599414..9da5a9176 100644 --- a/tests/lib/rules/new-line-between-multi-line-property.js +++ b/tests/lib/rules/new-line-between-multi-line-property.js @@ -235,7 +235,7 @@ ruleTester.run('new-line-between-multi-line-property', rule, { // test set insertLine to 2 { filename: 'test.vue', - options: [{ insertLine: 2 }], + options: [{ 'insert-line': 2 }], code: ` + `, + output: ` + + `, + errors: [ + 'Enforce new lines between multi-line properties in Vue components.', + 'Enforce new lines between multi-line properties in Vue components.' + ] } ] }) From 154b00a05532c034c9619f7caf909e2b1fedb242 Mon Sep 17 00:00:00 2001 From: IWANABETHATGUY <974153916@qq.com> Date: Sun, 26 Jul 2020 23:34:47 +0800 Subject: [PATCH 07/14] =?UTF-8?q?test:=20=F0=9F=92=8D=20fix=20report=20whe?= =?UTF-8?q?n=20multi-line-property=20in=20callExpression?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/rules/README.md | 2 +- .../new-line-between-multi-line-property.md | 1 - lib/configs/strongly-recommended.js | 1 - .../new-line-between-multi-line-property.js | 12 ++++- .../new-line-between-multi-line-property.js | 52 ++++++++++++++++--- 5 files changed, 56 insertions(+), 12 deletions(-) diff --git a/docs/rules/README.md b/docs/rules/README.md index 48a458d95..defbb3d14 100644 --- a/docs/rules/README.md +++ b/docs/rules/README.md @@ -230,7 +230,6 @@ Enforce all the rules in this category, as well as all higher priority rules, wi | [vue/max-attributes-per-line](./max-attributes-per-line.md) | enforce the maximum number of attributes per line | :wrench: | | [vue/multiline-html-element-content-newline](./multiline-html-element-content-newline.md) | require a line break before and after the contents of a multiline element | :wrench: | | [vue/mustache-interpolation-spacing](./mustache-interpolation-spacing.md) | enforce unified spacing in mustache interpolations | :wrench: | -| [vue/new-line-between-multi-line-property](./new-line-between-multi-line-property.md) | enforce new lines between multi-line properties in Vue components | :wrench: | | [vue/no-multi-spaces](./no-multi-spaces.md) | disallow multiple spaces | :wrench: | | [vue/no-spaces-around-equal-signs-in-attribute](./no-spaces-around-equal-signs-in-attribute.md) | disallow spaces around equal signs in attribute | :wrench: | | [vue/no-template-shadow](./no-template-shadow.md) | disallow variable declarations from shadowing variables declared in the outer scope | | @@ -284,6 +283,7 @@ For example: | [vue/html-comment-content-spacing](./html-comment-content-spacing.md) | enforce unified spacing in HTML comments | :wrench: | | [vue/html-comment-indent](./html-comment-indent.md) | enforce consistent indentation in HTML comments | :wrench: | | [vue/match-component-file-name](./match-component-file-name.md) | require component name property to match its file name | | +| [vue/new-line-between-multi-line-property](./new-line-between-multi-line-property.md) | enforce new lines between multi-line properties in Vue components | :wrench: | | [vue/no-bare-strings-in-template](./no-bare-strings-in-template.md) | disallow the use of bare strings in `