From 664587c13fcb1fbc6a2378db849acf253e1e37db Mon Sep 17 00:00:00 2001 From: ota Date: Wed, 30 Jan 2019 19:42:38 +0900 Subject: [PATCH] Chore: update document of `match-component-file-name.md` Updated according to the document style of vuepress. --- .../components/eslint-code-block.vue | 17 +- docs/rules/match-component-file-name.md | 222 +++++++++++++----- 2 files changed, 175 insertions(+), 64 deletions(-) diff --git a/docs/.vuepress/components/eslint-code-block.vue b/docs/.vuepress/components/eslint-code-block.vue index 13d824a52..ab33abdf1 100644 --- a/docs/.vuepress/components/eslint-code-block.vue +++ b/docs/.vuepress/components/eslint-code-block.vue @@ -6,8 +6,8 @@ :code="code" :style="{ height }" class="eslint-code-block" - filename="example.vue" - language="html" + :filename="filename" + :language="language" :preprocess="preprocess" :postprocess="postprocess" dark @@ -36,6 +36,14 @@ export default { default () { return {} } + }, + filename: { + type: String, + default: 'example.vue' + }, + language: { + type: String, + default: 'html' } }, @@ -83,7 +91,10 @@ export default { parser: 'vue-eslint-parser', parserOptions: { ecmaVersion: 2019, - sourceType: 'module' + sourceType: 'module', + ecmaFeatures: { + jsx: true + } } } }, diff --git a/docs/rules/match-component-file-name.md b/docs/rules/match-component-file-name.md index 963295fe9..961937b19 100644 --- a/docs/rules/match-component-file-name.md +++ b/docs/rules/match-component-file-name.md @@ -25,8 +25,7 @@ This rule has some options. } ``` -By default this rule will only verify components in a file with a `.jsx` -extension. +By default this rule will only verify components in a file with a `.jsx` extension. You can use any combination of `".jsx"`, `".vue"` and `".js"` extensions. @@ -34,130 +33,196 @@ You can also enforce same case between the component's name and its file name. If you are defining multiple components within the same file, this rule will be ignored. -:-1: Examples of **incorrect** code for this rule: + ```jsx // file name: src/MyComponent.jsx export default { - name: 'MComponent', // note the missing y - render: () { + /* ✓ GOOD */ + name: 'MyComponent', + render() { return

Hello world

} } ``` -```vue -// file name: src/MyComponent.vue -// options: {extensions: ["vue"]} - -``` +
-```js -// file name: src/MyComponent.js -// options: {extensions: ["js"]} -new Vue({ - name: 'MComponent', - template: '
' -}) -``` - -```js -// file name: src/MyComponent.js -// options: {extensions: ["js"]} -Vue.component('MComponent', { - template: '
' -}) -``` + ```jsx // file name: src/MyComponent.jsx -// options: {shouldMatchCase: true} export default { + /* ✓ GOOD */ name: 'my-component', render() { return
} } ``` -```jsx -// file name: src/my-component.jsx -// options: {shouldMatchCase: true} -export default { - name: 'MyComponent', - render() { return
} -} -``` + -:+1: Examples of **correct** code for this rule: + ```jsx // file name: src/MyComponent.jsx export default { - name: 'MyComponent', - render: () { + /* ✗ BAD */ + name: 'MComponent', // note the missing y + render() { return

Hello world

} } ``` +
+ + + ```jsx // file name: src/MyComponent.jsx -// no name property defined +/* no name property defined */ export default { - render: () { + render() { return

Hello world

} } ``` +
+ + + +```vue + + +``` + + + +## :wrench: Options + +```json +{ + "vue/match-component-file-name": ["error", { + "extensions": ["jsx"], + "shouldMatchCase": false + }] +} +``` + +- `"extensions": []` ... array of file extensions to be verified. Default is set to `["jsx"]`. +- `"shouldMatchCase": false` ... boolean indicating if component's name + should also match its file name case. Default is set to `false`. + +### `{extensions: ["vue"]}` + + + ```vue -// file name: src/MyComponent.vue + ``` + + + + +```vue + + +``` + + + + + ```vue -// file name: src/MyComponent.vue + ``` + + +### `{extensions: ["js"]}` + + + ```js // file name: src/MyComponent.js new Vue({ + /* ✓ GOOD */ name: 'MyComponent', template: '
' }) ``` + + + + +```js +// file name: src/MyComponent.js +/* ✓ GOOD */ +Vue.component('MyComponent', { + template: '
' +}) +``` + + + + + ```js // file name: src/MyComponent.js new Vue({ + /* ✗ BAD */ + name: 'MComponent', template: '
' }) ``` + + + + ```js // file name: src/MyComponent.js -Vue.component('MyComponent', { +/* ✗ BAD */ +Vue.component('MComponent', { template: '
' }) ``` + + + + ```js // file name: src/components.js -// defines multiple components, so this rule is ignored +/* defines multiple components, so this rule is ignored */ Vue.component('MyComponent', { template: '
' }) @@ -172,38 +237,73 @@ new Vue({ }) ``` + + + + +```js +// file name: src/MyComponent.js +/* no name property defined */ +new Vue({ + template: '
' +}) +``` + + + +### `{shouldMatchCase: true}` + + + ```jsx // file name: src/MyComponent.jsx -// options: {shouldMatchCase: true} export default { + /* ✓ GOOD */ name: 'MyComponent', render() { return
} } ``` + + + + ```jsx // file name: src/my-component.jsx -// options: {shouldMatchCase: true} export default { + /* ✓ GOOD */ name: 'my-component', render() { return
} } ``` -## :wrench: Options + -```json -{ - "vue/match-component-file-name": ["error", { - "extensions": ["jsx"], - "shouldMatchCase": false - }] + + +```jsx +// file name: src/MyComponent.jsx +export default { + /* ✗ BAD */ + name: 'my-component', + render() { return
} } ``` -- `"extensions": []` ... array of file extensions to be verified. Default is set to `["jsx"]`. -- `"shouldMatchCase": false` ... boolean indicating if component's name - should also match its file name case. Default is set to `false`. + + + + +```jsx +// file name: src/my-component.jsx +export default { + /* ✗ BAD */ + name: 'MyComponent', + render() { return
} +} +``` + + ## :books: Further reading