Skip to content

Commit

Permalink
feat: standred rules of vue js
Browse files Browse the repository at this point in the history
  • Loading branch information
hannoeru committed May 3, 2022
1 parent 448da13 commit 8fc2308
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 8 deletions.
6 changes: 3 additions & 3 deletions packages/eslint-plugin/src/configs/typescript.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

import { defineConfig, fromEntries, ruleFromStandard } from '../utils'
import { equivalents, resolverExtensionsWithTS } from '../constants'
import { TSEquivalents, resolverExtensionsWithTS } from '../constants'

export default defineConfig({
extends: [
Expand Down Expand Up @@ -34,9 +34,9 @@ export default defineConfig({
extends: ['plugin:@typescript-eslint/recommended'],
rules: {
// Rules replaced by @typescript-eslint versions:
...fromEntries(equivalents.map(name => [name, 'off'])),
...fromEntries(TSEquivalents.map(name => [name, 'off'])),
// @typescript-eslint versions of Standard.js rules:
...fromEntries(equivalents.map(name => [`@typescript-eslint/${name}`, ruleFromStandard(name)])),
...fromEntries(TSEquivalents.map(name => [`@typescript-eslint/${name}`, ruleFromStandard(name)])),
// Override custom JS rules
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
'@typescript-eslint/no-use-before-define': ['error', {
Expand Down
38 changes: 34 additions & 4 deletions packages/eslint-plugin/src/configs/vue.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { defineConfig } from '../utils'
import { VueEquivalents } from '../constants'
import { defineConfig, fromEntries, ruleFromStandard } from '../utils'

export default defineConfig({
overrides: [
Expand All @@ -10,16 +11,45 @@ export default defineConfig({
parser: '@typescript-eslint/parser',
},
extends: ['plugin:vue/vue3-recommended'],
env: {
'vue/setup-compiler-macros': true,
},
rules: {
'no-undef': 'off',
'no-unused-vars': 'off',
'@typescript-eslint/no-unused-vars': 'off',
// vue versions of Standard.js rules:
...fromEntries(VueEquivalents.map(name => [`vue/${name}`, ruleFromStandard(name)])),

// Override custom JS rules
'vue/quote-props': ['error', 'consistent-as-needed'],
'vue/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
'vue/camelcase': 'off',
'vue/comma-dangle': ['error', 'always-multiline'],

// Overrides
'vue/max-attributes-per-line': ['warn', { singleline: 5 }],
// 'vue/html-self-closing': 'off',
'vue/no-v-html': 'off',
'vue/require-default-prop': 'off',
'vue/multi-word-component-names': 'off',
'vue/block-tag-newline': ['error', {
singleline: 'always',
multiline: 'always',
}],

// Uncategorized rules
'vue/component-name-in-template-casing': ['error', 'PascalCase'],
'vue/component-options-name-casing': ['error', 'PascalCase'],
'vue/custom-event-name-casing': ['error', 'camelCase'],
'vue/define-macros-order': ['error', {
order: ['defineProps', 'defineEmits'],
}],
'vue/html-comment-content-spacing': ['error', 'always', {
exceptions: ['-'],
}],
'vue/no-restricted-v-bind': ['error', '/^v-/'],
'vue/no-useless-v-bind': 'error',
'vue/no-v-text-v-html-on-component': 'error',
'vue/padding-line-between-blocks': ['error', 'always'],
'vue/prefer-separate-static-class': 'error',
},
},
],
Expand Down
36 changes: 35 additions & 1 deletion packages/eslint-plugin/src/constants.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import config from 'eslint-config-standard/.eslintrc.json'
import type { TSESLint } from '@typescript-eslint/utils'

export const equivalents = [
export const TSEquivalents = [
'comma-spacing',
'dot-notation',
'brace-style',
Expand All @@ -23,6 +23,40 @@ export const equivalents = [
'object-curly-spacing',
] as const

export const VueEquivalents = [
// Extension rules
'array-bracket-spacing',
'arrow-spacing',
'block-spacing',
'brace-style',
'camelcase',
'comma-dangle',
'comma-spacing',
'comma-style',
'dot-location',
'dot-notation',
'eqeqeq',
'func-call-spacing',
'key-spacing',
'keyword-spacing',
'no-constant-condition',
'no-empty-pattern',
'no-extra-parens',
'no-irregular-whitespace',
'no-loss-of-precision',
'no-sparse-arrays',
'object-curly-newline',
'object-curly-spacing',
'object-property-newline',
'object-shorthand',
'operator-linebreak',
'quote-props',
'space-in-parens',
'space-infix-ops',
'space-unary-ops',
'template-curly-spacing',
] as const

export const configStandard = config as unknown as TSESLint.Linter.Config

export const resolverExtensions = ['.js', '.jsx', '.mjs', '.cjs', '.json']
Expand Down

0 comments on commit 8fc2308

Please sign in to comment.