diff --git a/package.json b/package.json index 54ccc35..00148b7 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "prettier": "^2.8.4", "typescript": "^4.9.5", "vite": "^4.1.1", + "vite-plugin-vitepress-demo": "2.0.0-alpha.8", "vitepress": "1.0.0-alpha.47", "vitest": "^0.28.5" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d3048cd..a4ed3ce 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,9 +14,10 @@ specifiers: prettier: ^2.8.4 typescript: ^4.9.5 vite: ^4.1.1 + vite-plugin-vitepress-demo: 2.0.0-alpha.8 vitepress: 1.0.0-alpha.47 vitest: ^0.28.5 - vue: ^3.2.47 + vue: ^3.2.0 dependencies: vue: 3.2.47 @@ -35,6 +36,7 @@ devDependencies: prettier: 2.8.4 typescript: 4.9.5 vite: 4.1.1_@types+node@18.13.0 + vite-plugin-vitepress-demo: 2.0.0-alpha.8_swexselz56x4db7bjlou2nhtvm vitepress: 1.0.0-alpha.47_@types+node@18.13.0 vitest: 0.28.5 @@ -1549,6 +1551,14 @@ packages: engines: {node: '>=12'} dev: true + /anymatch/3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + /arg/4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} dev: true @@ -1620,6 +1630,11 @@ packages: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true + /binary-extensions/2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + /body-scroll-lock/4.0.0-beta.0: resolution: {integrity: sha512-a7tP5+0Mw3YlUJcGAKUqIBkYYGlYxk2fnCasq/FUph1hadxlTRjF+gAcZksxANnaMnALjxEddmSi/H3OR8ugcQ==} dev: true @@ -1748,6 +1763,21 @@ packages: resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} dev: true + /chokidar/3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + /ci-info/3.8.0: resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} engines: {node: '>=8'} @@ -2692,6 +2722,15 @@ packages: is-callable: 1.2.7 dev: true + /fs-extra/10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + dependencies: + graceful-fs: 4.2.10 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + /fs-extra/11.1.0: resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==} engines: {node: '>=14.14'} @@ -3021,6 +3060,13 @@ packages: has-bigints: 1.0.2 dev: true + /is-binary-path/2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + /is-boolean-object/1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} @@ -3084,6 +3130,10 @@ packages: resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} dev: true + /is-json/2.0.1: + resolution: {integrity: sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==} + dev: true + /is-negative-zero/2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} @@ -3281,6 +3331,12 @@ packages: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true + /linkify-it/4.0.1: + resolution: {integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==} + dependencies: + uc.micro: 1.0.6 + dev: true + /lint-staged/13.1.2: resolution: {integrity: sha512-K9b4FPbWkpnupvK3WXZLbgu9pchUJ6N7TtVZjbaPsoizkqFUDkUReUL25xdrCljJs7uLUF3tZ7nVPeo/6lp+6w==} engines: {node: ^14.13.1 || >=16.0.0} @@ -3420,6 +3476,13 @@ packages: dependencies: sourcemap-codec: 1.4.8 + /magic-string/0.26.7: + resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} + engines: {node: '>=12'} + dependencies: + sourcemap-codec: 1.4.8 + dev: true + /make-error/1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: true @@ -3434,6 +3497,17 @@ packages: engines: {node: '>=8'} dev: true + /markdown-it/13.0.1: + resolution: {integrity: sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==} + hasBin: true + dependencies: + argparse: 2.0.1 + entities: 3.0.1 + linkify-it: 4.0.1 + mdurl: 1.0.1 + uc.micro: 1.0.6 + dev: true + /mdast-util-from-markdown/0.8.5: resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} dependencies: @@ -3450,6 +3524,10 @@ packages: resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} dev: true + /mdurl/1.0.1: + resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + dev: true + /meow/8.1.2: resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} engines: {node: '>=10'} @@ -3820,6 +3898,20 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 + /posthtml-parser/0.11.0: + resolution: {integrity: sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==} + engines: {node: '>=12'} + dependencies: + htmlparser2: 7.2.0 + dev: true + + /posthtml-render/3.0.0: + resolution: {integrity: sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==} + engines: {node: '>=12'} + dependencies: + is-json: 2.0.1 + dev: true + /preact/10.12.1: resolution: {integrity: sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==} dev: true @@ -3902,6 +3994,13 @@ packages: util-deprecate: 1.0.2 dev: true + /readdirp/3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + /redent/3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -4441,6 +4540,10 @@ packages: hasBin: true dev: true + /uc.micro/1.0.6: + resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} + dev: true + /ufo/1.0.1: resolution: {integrity: sha512-boAm74ubXHY7KJQZLlXrtMz52qFvpsbOxDcZOnw/Wf+LS4Mmyu7JxmzD4tDLtUQtmZECypJ0FrCz4QIe6dvKRA==} dev: true @@ -4520,6 +4623,23 @@ packages: - terser dev: true + /vite-plugin-vitepress-demo/2.0.0-alpha.8_swexselz56x4db7bjlou2nhtvm: + resolution: {integrity: sha512-hDyxdZ1K295YXvxchwu3ULzs61ESY6VmA2t1TIKbZrA4ZyCrc3C8wKXVJIwh5/xANbK9aoErSV5L6BbPIiGUtQ==} + peerDependencies: + vitepress: ^1.0.0-alpha.20 + vue: ^3.2.0 + dependencies: + chokidar: 3.5.3 + fast-glob: 3.2.12 + fs-extra: 10.1.0 + magic-string: 0.26.7 + markdown-it: 13.0.1 + posthtml-parser: 0.11.0 + posthtml-render: 3.0.0 + vitepress: 1.0.0-alpha.47_@types+node@18.13.0 + vue: 3.2.47 + dev: true + /vite/4.1.1_@types+node@18.13.0: resolution: {integrity: sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==} engines: {node: ^14.18.0 || >=16.0.0} diff --git a/site/.vitepress/config.ts b/site/.vitepress/config.ts index d15abcd..c990df7 100644 --- a/site/.vitepress/config.ts +++ b/site/.vitepress/config.ts @@ -1,5 +1,11 @@ import { defineConfig } from 'vitepress' +import { getNav } from './config/nav' +import { getSidebar } from './config/sidebar' export default defineConfig({ - title: 'vue3组件库站点' + title: 'vue3组件库站点', + themeConfig: { + nav: getNav(), + sidebar: getSidebar() + } }) diff --git a/site/.vitepress/config/nav.ts b/site/.vitepress/config/nav.ts new file mode 100644 index 0000000..2fed817 --- /dev/null +++ b/site/.vitepress/config/nav.ts @@ -0,0 +1,10 @@ +import type { DefaultTheme } from 'vitepress' + +export const getNav = (): DefaultTheme.NavItem[] => { + return [ + { + text: '组件', + link: '/components/' + } + ] +} diff --git a/site/.vitepress/config/sidebar.ts b/site/.vitepress/config/sidebar.ts new file mode 100644 index 0000000..ef5bc9b --- /dev/null +++ b/site/.vitepress/config/sidebar.ts @@ -0,0 +1,10 @@ +import type { DefaultTheme } from 'vitepress' + +export const getSidebar = (): DefaultTheme.Sidebar => { + return [ + { + text: 'Button 按钮', + link: '/components/button/' + } + ] +} diff --git a/site/.vitepress/theme/index.ts b/site/.vitepress/theme/index.ts new file mode 100644 index 0000000..486972a --- /dev/null +++ b/site/.vitepress/theme/index.ts @@ -0,0 +1,12 @@ +import type { Theme } from 'vitepress' +// eslint-disable-next-line import/no-named-as-default +import DefaultTheme from 'vitepress/theme' +import { AntdTheme } from 'vite-plugin-vitepress-demo/theme' + +export default { + ...DefaultTheme, + enhanceApp(ctx) { + DefaultTheme.enhanceApp?.(ctx) + ctx.app.component('Demo', AntdTheme) + } +} as Theme diff --git a/site/components/button/index.md b/site/components/button/index.md new file mode 100644 index 0000000..eec06c7 --- /dev/null +++ b/site/components/button/index.md @@ -0,0 +1,9 @@ +# Button 按钮 + +按钮用于开始一个即时操作。 + + +## 演示例子 + + + diff --git a/site/demos/button/basic.vue b/site/demos/button/basic.vue new file mode 100644 index 0000000..69fb3e7 --- /dev/null +++ b/site/demos/button/basic.vue @@ -0,0 +1,16 @@ + +--- +title: 基础按钮 +--- + +这是一个Button的基础按钮 + + + + + + + + diff --git a/site/vite.config.ts b/site/vite.config.ts index cb6165c..5f3bce3 100644 --- a/site/vite.config.ts +++ b/site/vite.config.ts @@ -1,6 +1,12 @@ import { defineConfig } from 'vite' import vueJsxPlugin from '@vitejs/plugin-vue-jsx' +import { VitePluginVitepressDemo } from 'vite-plugin-vitepress-demo' export default defineConfig({ - plugins: [vueJsxPlugin()] + plugins: [ + vueJsxPlugin(), + VitePluginVitepressDemo({ + glob: ['**/demos/**/*.vue'] + }) + ] })