From 07d2beccfcfbc5674dcfcf269736a5e9c2c6b2e4 Mon Sep 17 00:00:00 2001 From: hanx316 Date: Wed, 19 Aug 2020 21:35:40 +0800 Subject: [PATCH] chore(project): modify some lint rules allow vue default props; disallow arrow parens when only one parameter; use rule words rather than number; modify the sequences of rules; delete a duplicate field in tsconfig --- .eslintrc.js | 33 +++++++++++--------- commitlint.config.js | 6 ++-- packages/alert/src/index.vue | 2 +- packages/avatar/src/index.vue | 20 +++--------- packages/backtop/src/index.vue | 2 +- packages/button/src/button.vue | 2 +- packages/checkbox/__tests__/checkbox.spec.ts | 14 ++++----- packages/checkbox/src/checkbox-button.vue | 2 +- packages/checkbox/src/checkbox.vue | 2 +- packages/collapse/src/collapse.vue | 4 +-- packages/container/src/container.vue | 2 +- packages/popper/__tests__/popper.spec.ts | 2 +- packages/popper/src/index.vue | 2 +- packages/radio/src/radio-group.vue | 2 +- packages/scrollbar/src/bar.ts | 8 ++--- packages/tag/src/index.vue | 4 +-- tsconfig.json | 1 - website/entry.js | 2 +- website/route.config.js | 2 +- 19 files changed, 51 insertions(+), 61 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 0d7edba6c1..3a47a7b84e 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -26,7 +26,24 @@ module.exports = { semi: ['error', 'never'], indent: ['error', 2, { SwitchCase: 1 }], 'object-curly-spacing': ['error', 'always'], + 'arrow-parens': ['error', 'as-needed'], + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/member-delimiter-style': [ + 'error', + { + multiline: { + delimiter: 'none', + requireLast: false, + }, + singleline: { + delimiter: 'semi', + requireLast: true, + }, + }, + ], // vue + 'vue/no-v-html': 'off', 'vue/singleline-html-element-content-newline': 'off', 'vue/html-self-closing': ['error', { html: { @@ -39,21 +56,7 @@ module.exports = { singleline: 3, multiline: 1, }], - '@typescript-eslint/member-delimiter-style': [ - 2, - { - multiline: { - delimiter: 'none', - requireLast: false, - }, - singleline: { - delimiter: 'semi', - requireLast: true, - }, - }, - ], - '@typescript-eslint/explicit-module-boundary-types': 'off', + 'vue/require-default-prop': 'off', 'vue/html-closing-bracket-spacing': 'error', - '@typescript-eslint/no-explicit-any': 0, }, } diff --git a/commitlint.config.js b/commitlint.config.js index 424964fc3d..30b791a4fa 100644 --- a/commitlint.config.js +++ b/commitlint.config.js @@ -10,8 +10,8 @@ function getPackages (context) { const project = new Project(cwd) return project.getPackages() }) - .then((packages) => { - return packages.map((pkg) => pkg.name).map((name) => (name.charAt(0) === '@' ? name.split('/')[1] : name)) + .then(packages => { + return packages.map(pkg => pkg.name).map(name => (name.charAt(0) === '@' ? name.split('/')[1] : name)) }) } @@ -29,7 +29,7 @@ const scopes = [ module.exports = { rules: { - 'scope-enum': (ctx) => getPackages(ctx).then((packages) => [2, 'always', [...packages, ...scopes]]), + 'scope-enum': ctx => getPackages(ctx).then(packages => [2, 'always', [...packages, ...scopes]]), 'body-leading-blank': [1, 'always'], 'footer-leading-blank': [1, 'always'], 'header-max-length': [2, 'always', 72], diff --git a/packages/alert/src/index.vue b/packages/alert/src/index.vue index 3092bbdeb5..893225f76b 100644 --- a/packages/alert/src/index.vue +++ b/packages/alert/src/index.vue @@ -80,7 +80,7 @@ export default defineComponent({ const isBoldTitle = computed(() => props.description || ctx.slots.default ? 'is-bold' : '') // methods - const close = (evt) => { + const close = evt => { visible.value = false ctx.emit('click', evt) } diff --git a/packages/avatar/src/index.vue b/packages/avatar/src/index.vue index ef4e30b6a2..685c04bd1f 100644 --- a/packages/avatar/src/index.vue +++ b/packages/avatar/src/index.vue @@ -37,22 +37,10 @@ export default defineComponent({ return ['circle', 'square'].includes(val) }, }, - icon: { - type: String, - default: undefined, - }, - src: { - type: String, - default: undefined, - }, - alt: { - type: String, - default: undefined, - }, - srcSet: { - type: String, - default: undefined, - }, + icon: String, + src: String, + alt: String, + srcSet: String, fit: { type: String, default: 'cover', diff --git a/packages/backtop/src/index.vue b/packages/backtop/src/index.vue index 5fb586adc9..4a30d0ac24 100644 --- a/packages/backtop/src/index.vue +++ b/packages/backtop/src/index.vue @@ -75,7 +75,7 @@ export default defineComponent({ const onScroll = () => { visible.value = el.value.scrollTop >= props.visibilityHeight } - const handleClick = (event) => { + const handleClick = event => { scrollToTop() ctx.emit('click', event) } diff --git a/packages/button/src/button.vue b/packages/button/src/button.vue index 2bd2d7fb89..51c97c6aba 100644 --- a/packages/button/src/button.vue +++ b/packages/button/src/button.vue @@ -105,7 +105,7 @@ export default defineComponent({ }) //methods - const handleClick = (evt) => { + const handleClick = evt => { ctx.emit('click', evt) } diff --git a/packages/checkbox/__tests__/checkbox.spec.ts b/packages/checkbox/__tests__/checkbox.spec.ts index 6129629b82..a989ef2d4e 100644 --- a/packages/checkbox/__tests__/checkbox.spec.ts +++ b/packages/checkbox/__tests__/checkbox.spec.ts @@ -23,7 +23,7 @@ const _mount = (template: string, data, otherObj? }) describe('Checkbox', () => { - test('create', async (done) => { + test('create', async done => { const wrapper = _mount('', () => ({ checkbox: false })) const vm = wrapper.vm expect(wrapper.classes()).toContain('el-checkbox') @@ -36,7 +36,7 @@ describe('Checkbox', () => { }) }) - test('disabled', async (done) => { + test('disabled', async done => { const wrapper = _mount('', () => ({ checkbox: false })) const vm = wrapper.vm expect(wrapper.classes()).toContain('is-disabled') @@ -47,7 +47,7 @@ describe('Checkbox', () => { }) }) - test('change event', async (done) => { + test('change event', async done => { const wrapper = _mount( ` @@ -74,7 +74,7 @@ describe('Checkbox', () => { }) }) - test('checkbox group', async (done) => { + test('checkbox group', async done => { const wrapper = _mount( ` @@ -187,7 +187,7 @@ describe('Checkbox', () => { }) describe('check-button', () => { - test('create', async (done) => { + test('create', async done => { const wrapper = _mount('', () => ({ checkbox: false })) const vm = wrapper.vm expect(wrapper.classes()).toContain('el-checkbox-button') @@ -200,7 +200,7 @@ describe('check-button', () => { }) }) - test('disabled', async (done) => { + test('disabled', async done => { const wrapper = _mount('', () => ({ checkbox: false })) const vm = wrapper.vm expect(wrapper.classes()).toContain('is-disabled') @@ -211,7 +211,7 @@ describe('check-button', () => { }) }) - test('change event', async (done) => { + test('change event', async done => { const wrapper = _mount( ` diff --git a/packages/checkbox/src/checkbox-button.vue b/packages/checkbox/src/checkbox-button.vue index 21899d8e0d..761e1614eb 100644 --- a/packages/checkbox/src/checkbox-button.vue +++ b/packages/checkbox/src/checkbox-button.vue @@ -177,7 +177,7 @@ export default defineComponent({ // }) } - watch(() => props.modelValue, (val) => { + watch(() => props.modelValue, val => { elFormItem.changeEvent?.(val) }) diff --git a/packages/checkbox/src/checkbox.vue b/packages/checkbox/src/checkbox.vue index 18b304a8b5..26c1bde1c1 100644 --- a/packages/checkbox/src/checkbox.vue +++ b/packages/checkbox/src/checkbox.vue @@ -197,7 +197,7 @@ export default defineComponent({ // }) } - watch(() => props.modelValue, (val) => { + watch(() => props.modelValue, val => { elFormItem.changeEvent?.(val) }) diff --git a/packages/collapse/src/collapse.vue b/packages/collapse/src/collapse.vue index 6e9935d873..b1d258a309 100644 --- a/packages/collapse/src/collapse.vue +++ b/packages/collapse/src/collapse.vue @@ -26,13 +26,13 @@ export default defineComponent({ const activeNames = ref([].concat(props.modelValue)) const collapseMitt: mitt.Emitter = mitt() - const setActiveNames = (_activeNames) => { + const setActiveNames = _activeNames => { activeNames.value = [].concat(_activeNames) const value = props.accordion ? activeNames.value[0] : activeNames.value emit('update:modelValue', value) } - const handleItemClick = (name) => { + const handleItemClick = name => { if(props.accordion) { setActiveNames( (activeNames.value[0] || activeNames.value[0] === 0) && diff --git a/packages/container/src/container.vue b/packages/container/src/container.vue index db74edd0d9..f0b7e6f8c9 100644 --- a/packages/container/src/container.vue +++ b/packages/container/src/container.vue @@ -23,7 +23,7 @@ export default defineComponent({ } if (slots && slots.default) { const vNodes: VNode[] = slots.default() - return vNodes.some((vNode) => { + return vNodes.some(vNode => { const tag = vNode.type.name return tag === 'ElHeader' || tag === 'ElFooter' }) diff --git a/packages/popper/__tests__/popper.spec.ts b/packages/popper/__tests__/popper.spec.ts index 6b90cac8aa..c357943a41 100644 --- a/packages/popper/__tests__/popper.spec.ts +++ b/packages/popper/__tests__/popper.spec.ts @@ -81,7 +81,7 @@ describe('Popper.vue', () => { test('append to body', () => { const { appendChild } = document.body - document.body.appendChild = jest.fn((child) => { + document.body.appendChild = jest.fn(child => { return appendChild.call(document.body, child) }) diff --git a/packages/popper/src/index.vue b/packages/popper/src/index.vue index 0bb608f394..5d09a4a97c 100644 --- a/packages/popper/src/index.vue +++ b/packages/popper/src/index.vue @@ -329,7 +329,7 @@ export default defineComponent({ }, ) - watch(() => popperOptions.value, (val) => { + watch(() => popperOptions.value, val => { popperInstance.value.setOptions({ placement: val.placement, strategy: val.strategy, diff --git a/packages/radio/src/radio-group.vue b/packages/radio/src/radio-group.vue index c3b497db3e..04e4aa1206 100644 --- a/packages/radio/src/radio-group.vue +++ b/packages/radio/src/radio-group.vue @@ -86,7 +86,7 @@ export default { modelValue, }) - const handleKeydown = (e) => { // 左右上下按键 可以在radio组内切换不同选项 + const handleKeydown = e => { // 左右上下按键 可以在radio组内切换不同选项 const target = e.target const className = target.nodeName === 'INPUT' ? '[type=radio]' : '[role=radio]' const radios = radioGroup.value.querySelectorAll(className) diff --git a/packages/scrollbar/src/bar.ts b/packages/scrollbar/src/bar.ts index 70ebbc46b3..1f40b64cfc 100644 --- a/packages/scrollbar/src/bar.ts +++ b/packages/scrollbar/src/bar.ts @@ -20,7 +20,7 @@ export default { }) const barStore = ref({}) const cursorDown = ref(null) - const clickThumbHandler= (e) => { + const clickThumbHandler= e => { // prevent click event of right button if (e.ctrlKey || e.button === 2) { return @@ -29,14 +29,14 @@ export default { barStore.value[bar.value.axis] = (e.currentTarget[bar.value.offset] - (e[bar.value.client] - e.currentTarget.getBoundingClientRect()[bar.value.direction])) } - const clickTrackHandler = (e) => { + const clickTrackHandler = e => { const offset = Math.abs(e.target.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]) const thumbHalf = (thumb.value[bar.value.offset] / 2) const thumbPositionPercentage = ((offset - thumbHalf) * 100 / instance.vnode.el[bar.value.offset]) wrap.value[bar.value.scroll] = (thumbPositionPercentage * wrap.value[bar.value.scrollSize] / 100) } - const startDrag = (e) =>{ + const startDrag = e =>{ e.stopImmediatePropagation() cursorDown.value = true on(document, 'mousemove', mouseMoveDocumentHandler) @@ -44,7 +44,7 @@ export default { document.onselectstart = () => false } - const mouseMoveDocumentHandler = (e) => { + const mouseMoveDocumentHandler = e => { if (cursorDown.value === false) return const prevPage = barStore.value[bar.value.axis] diff --git a/packages/tag/src/index.vue b/packages/tag/src/index.vue index 904b470243..27adce981e 100644 --- a/packages/tag/src/index.vue +++ b/packages/tag/src/index.vue @@ -88,12 +88,12 @@ export default defineComponent({ }) // methods - const handleClose = (event) => { + const handleClose = event => { event.stopPropagation() ctx.emit('close', event) } - const handleClick = (event) => { + const handleClick = event => { ctx.emit('close', event) } diff --git a/tsconfig.json b/tsconfig.json index 1805f2eb17..4be1a07920 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,7 +12,6 @@ "lib": [ "es2020", "dom" ], - "esModuleInterop": true, "allowSyntheticDefaultImports": true }, "exclude": [ diff --git a/website/entry.js b/website/entry.js index 9af39d31a5..3873cef2e1 100644 --- a/website/entry.js +++ b/website/entry.js @@ -28,7 +28,7 @@ app.mixin({ computed: { $isEle: { get: () => (globalEle.data.$isEle), - set: (data) => {globalEle.data.$isEle = data}, + set: data => {globalEle.data.$isEle = data}, }, }, }) diff --git a/website/route.config.js b/website/route.config.js index 6ef6d0dc08..87c1b682e7 100644 --- a/website/route.config.js +++ b/website/route.config.js @@ -40,7 +40,7 @@ const loadDocs = function(lang, path) { return LOAD_DOCS_MAP[lang](path) } -const registerRoute = (navConfig) => { +const registerRoute = navConfig => { let route = [] Object.keys(navConfig).forEach((lang, index) => { let navs = navConfig[lang]