From 53632ad97a521d794cefbb5f66706cad6e617bcb Mon Sep 17 00:00:00 2001 From: Jaskang Date: Mon, 11 Mar 2024 15:23:18 +0800 Subject: [PATCH] feat: eslint rules --- eslint.config.js | 9 ++++- packages/docs/.vitepress/config.ts | 49 +++++++++++++++++++++++-- packages/docs/.vitepress/theme/base.css | 2 - packages/docs/postcss.config.cjs | 8 ---- packages/vue/src/Base/Popper/core.ts | 2 +- packages/vue/src/Button/index.vue | 2 +- packages/vue/src/Checkbox/Checkbox.vue | 1 - packages/vue/src/Input/index.vue | 2 +- packages/vue/src/Radio/Radio.vue | 1 - packages/vue/vite.config.ts | 3 +- tailwind.config.cjs | 2 + 11 files changed, 60 insertions(+), 21 deletions(-) delete mode 100644 packages/docs/postcss.config.cjs diff --git a/eslint.config.js b/eslint.config.js index 0fc21203..ae76f026 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -31,7 +31,11 @@ export default [ ecmaFeatures: { jsx: true }, }, }, - rules: { ...tsPlugin.configs.recommended.rules, '@typescript-eslint/ban-ts-comment': 0 }, + rules: { + ...tsPlugin.configs.recommended.rules, + '@typescript-eslint/ban-types': { '{}': false }, + '@typescript-eslint/ban-ts-comment': 0, + }, }, { files: ['**/*.vue'], @@ -48,8 +52,9 @@ export default [ }, rules: { ...tsPlugin.configs.recommended.rules, - ...vuePlugin.configs['vue3-essential'].rules, + '@typescript-eslint/ban-types': { '{}': false }, '@typescript-eslint/ban-ts-comment': 0, + ...vuePlugin.configs['vue3-essential'].rules, }, }, prettier, diff --git a/packages/docs/.vitepress/config.ts b/packages/docs/.vitepress/config.ts index b51300d7..b947af12 100644 --- a/packages/docs/.vitepress/config.ts +++ b/packages/docs/.vitepress/config.ts @@ -1,10 +1,17 @@ -import { dirname, resolve } from 'node:path' +import { dirname, join, resolve } from 'node:path' import { fileURLToPath } from 'node:url' import { defineConfig } from 'vitepress' import { readFileSync } from 'node:fs' import jsx from '@vitejs/plugin-vue-jsx' -const __dirname = dirname(fileURLToPath(import.meta.url)) +import autoprefixer from 'autoprefixer' +import tailwindcss from 'tailwindcss' +import colors from 'tailwindcss/colors' + +import typography from '@tailwindcss/typography' +import forms from '@tailwindcss/forms' +const __dirname = dirname(fileURLToPath(import.meta.url)) +console.log('vitepress config', __dirname) const baseCss = () => { const virtualModuleId = 'virtual:base.css' const resolvedVirtualModuleId = '\0' + virtualModuleId @@ -34,7 +41,7 @@ export default defineConfig({ { find: /^tailv$/, replacement: resolve(__dirname, '../../vue/src'), - }, + }, { find: '@', replacement: resolve(__dirname, '../../vue/src') }, { find: /^.\/styles\/base\.css$/, @@ -43,6 +50,42 @@ export default defineConfig({ }, ], }, + css: { + postcss: { + plugins: [ + // 'postcss-import': {}, + // 'tailwindcss/nesting': {}, + autoprefixer({}) as any, + tailwindcss({ + darkMode: 'class', + content: [ + './index.html', + join(__dirname, '../../vue/src/**/*.{ts,tsx,vue}'), + join(__dirname, '../../docs/*.{md,mdx}'), + join(__dirname, '../../docs/components/**/*.{md,mdx}'), + join(__dirname, '../../docs/.vitepress/theme/**/*.{md,mdx}'), + ], + theme: { + extend: { + colors: { + primary: colors.indigo, + success: colors.green, + warning: colors.amber, + danger: colors.red, + }, + }, + }, + plugins: [ + typography(), + forms({ + strategy: 'base', + }), + ], + blocklist: ['container'], + }), + ], + }, + }, }, themeConfig: { // https://vitepress.dev/reference/default-theme-config diff --git a/packages/docs/.vitepress/theme/base.css b/packages/docs/.vitepress/theme/base.css index 5aac2d59..de274f23 100644 --- a/packages/docs/.vitepress/theme/base.css +++ b/packages/docs/.vitepress/theme/base.css @@ -1,5 +1,3 @@ -@config '../../tailwind.config.cjs' - @tailwind base; @tailwind components; @tailwind utilities; diff --git a/packages/docs/postcss.config.cjs b/packages/docs/postcss.config.cjs deleted file mode 100644 index 2178384e..00000000 --- a/packages/docs/postcss.config.cjs +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - plugins: { - 'postcss-import': {}, - 'tailwindcss/nesting': {}, - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/packages/vue/src/Base/Popper/core.ts b/packages/vue/src/Base/Popper/core.ts index 82e1b5b7..60ea2a58 100644 --- a/packages/vue/src/Base/Popper/core.ts +++ b/packages/vue/src/Base/Popper/core.ts @@ -29,7 +29,7 @@ export type PopperContext = { nodeId: string parent: string open: boolean - onOpenChange(open: boolean, event?: Event, reason?: OpenChangeReason): void + onOpenChange(open: boolean, event?: Event): void } export type PopperTreeContext = { diff --git a/packages/vue/src/Button/index.vue b/packages/vue/src/Button/index.vue index 4b8eba9f..6b9e72da 100644 --- a/packages/vue/src/Button/index.vue +++ b/packages/vue/src/Button/index.vue @@ -24,7 +24,7 @@ const props = defineProps({ pill: Boolean, square: Boolean, block: Boolean, - loading: Boolean, + loading: Boolean, disabled: Boolean, }) diff --git a/packages/vue/src/Checkbox/Checkbox.vue b/packages/vue/src/Checkbox/Checkbox.vue index 612d9559..e3d0b05f 100644 --- a/packages/vue/src/Checkbox/Checkbox.vue +++ b/packages/vue/src/Checkbox/Checkbox.vue @@ -5,7 +5,6 @@ import { CheckboxGroupInjectKey } from './types' defineOptions({ name: 'TCheckbox' }) const emit = defineEmits<{ 'update:checked': [boolean]; change: [boolean] }>() -const slots = defineSlots<{ default?(_: {}): any }>() const props = defineProps({ value: { type: null, required: true }, name: String, diff --git a/packages/vue/src/Input/index.vue b/packages/vue/src/Input/index.vue index 68818672..b22f6377 100644 --- a/packages/vue/src/Input/index.vue +++ b/packages/vue/src/Input/index.vue @@ -12,7 +12,7 @@ const emit = defineEmits<{ blur: [FocusEvent] }>() -const slots = defineSlots<{ prefix?(): VNode; suffix?(): VNode }>() +const slots = defineSlots<{ prefix?(_: {}): any; suffix?(_: {}): any }>() const props = defineProps({ value: [String, Number], diff --git a/packages/vue/src/Radio/Radio.vue b/packages/vue/src/Radio/Radio.vue index db838194..aac78ac0 100644 --- a/packages/vue/src/Radio/Radio.vue +++ b/packages/vue/src/Radio/Radio.vue @@ -5,7 +5,6 @@ import { RadioGroupInjectKey } from './types' defineOptions({ name: 'TRadio' }) const emit = defineEmits<{ 'update:checked': [boolean]; change: [boolean] }>() -const slots = defineSlots<{ default?(_: {}): any }>() const props = defineProps({ value: { type: null, required: true }, name: String, diff --git a/packages/vue/vite.config.ts b/packages/vue/vite.config.ts index eb4e1369..a1fcea9a 100644 --- a/packages/vue/vite.config.ts +++ b/packages/vue/vite.config.ts @@ -3,11 +3,12 @@ import jsx from '@vitejs/plugin-vue-jsx' import { dirname, resolve } from 'node:path' import { fileURLToPath } from 'node:url' import { defineConfig } from 'vite' +import dts from 'vite-plugin-dts' const __dirname = dirname(fileURLToPath(import.meta.url)) // https://vitejs.dev/config/ export default defineConfig({ - plugins: [vue(), jsx()], + plugins: [vue(), jsx(), dts({ rollupTypes: true })], build: { lib: { formats: ['es'], diff --git a/tailwind.config.cjs b/tailwind.config.cjs index 420077c0..86dedb34 100644 --- a/tailwind.config.cjs +++ b/tailwind.config.cjs @@ -1,5 +1,7 @@ const colors = require('tailwindcss/colors') +console.log(__dirname) + /** @type {import('tailwindcss').Config} */ module.exports = { darkMode: 'class',