陈凯龙 3 лет назад
Родитель
Сommit
2c41826c57

+ 1 - 2
.gitignore

@@ -3,6 +3,5 @@ node_modules
 dist
 dist-ssr
 *.local
-/src/types/components.d.ts
-/src/types/auto-imports.d.ts
 /dist*
+pnpm-debug

+ 1 - 1
.vscode/extensions.json

@@ -1,3 +1,3 @@
 {
-  "recommendations": ["johnsoncodehk.volar"]
+  "recommendations": ["johnsoncodehk.volar", "lokalise.i18n-ally"]
 }

+ 6 - 7
.vscode/settings.json

@@ -1,12 +1,11 @@
 {
-  "cSpell.words": [
-    "Windi",
-    "Windicss"
-  ],
   "typescript.tsdk": "node_modules/typescript/lib",
-  "volar.tsPlugin": true,
   "prettier.enable": false,
-    "editor.codeActionsOnSave": {
+  "editor.codeActionsOnSave": {
     "source.fixAll.eslint": true
-  }
+  },
+  "[vue]": {
+    "editor.defaultFormatter": "johnsoncodehk.volar"
+  },
+  "i18n-ally.localesPaths": ["src/locales", "src/plugins/i18n"]
 }

+ 1 - 2
index.html

@@ -39,7 +39,6 @@
         }
 
         .app-loading .app-loading-logo {
-          /* width: 100px; */
           margin: 0 auto 15px auto;
         }
 
@@ -128,7 +127,7 @@
         <div class="app-loading-wrap">
           <div class="app-loading-title">
             <img src="/logo.png" class="app-loading-logo" alt="Logo" />
-            <div class="app-loading-title">vue-element-plus-admin</div>
+            <div class="app-loading-title">butterfly-admin</div>
           </div>
           <div class="app-loading-item">
             <div class="app-loading-outter"></div>

+ 18 - 6
package.json

@@ -1,6 +1,9 @@
 {
-  "name": "new-element-plus-admin",
-  "version": "0.0.0",
+  "name": "butterfly-admin",
+  "version": "3.0.0",
+  "description": "一套基于vue、element-plus、typesScript、vite的后台集成方案",
+  "author": "Archer <502431556@qq.com>",
+  "private": false,
   "scripts": {
     "i": "pnpm install",
     "dev": "vite --mode base",
@@ -23,13 +26,16 @@
   },
   "dependencies": {
     "@vueuse/core": "^7.1.2",
+    "element-plus": "^1.2.0-beta.5",
     "vue": "^3.2.24",
     "vue-i18n": "9.1.9",
-    "vue-router": "^4.0.12"
+    "vue-router": "^4.0.12",
+    "vue-types": "^4.1.1"
   },
   "devDependencies": {
     "@commitlint/cli": "^15.0.0",
     "@commitlint/config-conventional": "^15.0.0",
+    "@iconify-json/ep": "^1.0.1",
     "@intlify/vite-plugin-vue-i18n": "^3.2.1",
     "@typescript-eslint/eslint-plugin": "^5.6.0",
     "@typescript-eslint/parser": "^5.6.0",
@@ -56,14 +62,20 @@
     "stylelint-config-prettier": "^9.0.3",
     "stylelint-config-standard": "^24.0.0",
     "stylelint-order": "^5.0.0",
-    "typescript": "^4.4.3",
+    "typescript": "4.5.2",
     "unplugin-auto-import": "^0.5.1",
+    "unplugin-icons": "^0.12.23",
     "unplugin-vue-components": "^0.17.6",
     "vite": "2.6.14",
     "vite-plugin-eslint": "^1.3.0",
     "vite-plugin-vue-setup-extend": "^0.1.0",
     "vite-plugin-windicss": "^1.5.4",
     "vue-tsc": "^0.3.0",
-    "windicss": "^3.2.1"
-  }
+    "windicss": "^3.2.1",
+    "windicss-analysis": "^0.3.5"
+  },
+  "engines": {
+    "node": ">= 16.0.0"
+  },
+  "license": "MIT"
 }

+ 593 - 15
pnpm-lock.yaml

@@ -3,6 +3,7 @@ lockfileVersion: 5.3
 specifiers:
   '@commitlint/cli': ^15.0.0
   '@commitlint/config-conventional': ^15.0.0
+  '@iconify-json/ep': ^1.0.1
   '@intlify/vite-plugin-vue-i18n': ^3.2.1
   '@typescript-eslint/eslint-plugin': ^5.6.0
   '@typescript-eslint/parser': ^5.6.0
@@ -11,6 +12,7 @@ specifiers:
   '@vueuse/core': ^7.1.2
   autoprefixer: ^10.4.0
   commitizen: ^4.2.4
+  element-plus: ^1.2.0-beta.5
   eslint: ^8.4.1
   eslint-config-prettier: ^8.3.0
   eslint-define-config: ^1.2.0
@@ -30,8 +32,9 @@ specifiers:
   stylelint-config-prettier: ^9.0.3
   stylelint-config-standard: ^24.0.0
   stylelint-order: ^5.0.0
-  typescript: ^4.4.3
+  typescript: 4.5.2
   unplugin-auto-import: ^0.5.1
+  unplugin-icons: ^0.12.23
   unplugin-vue-components: ^0.17.6
   vite: 2.6.14
   vite-plugin-eslint: ^1.3.0
@@ -41,17 +44,22 @@ specifiers:
   vue-i18n: 9.1.9
   vue-router: ^4.0.12
   vue-tsc: ^0.3.0
+  vue-types: ^4.1.1
   windicss: ^3.2.1
+  windicss-analysis: ^0.3.5
 
 dependencies:
   '@vueuse/core': registry.npmmirror.com/@vueuse/core/7.1.2_vue@3.2.24
+  element-plus: registry.npmmirror.com/element-plus/1.2.0-beta.5_vue@3.2.24
   vue: registry.npmmirror.com/vue/3.2.24
   vue-i18n: registry.npmmirror.com/vue-i18n/9.1.9_vue@3.2.24
   vue-router: registry.npmmirror.com/vue-router/4.0.12_vue@3.2.24
+  vue-types: registry.npmmirror.com/vue-types/4.1.1_vue@3.2.24
 
 devDependencies:
   '@commitlint/cli': registry.npmmirror.com/@commitlint/cli/15.0.0
   '@commitlint/config-conventional': registry.npmmirror.com/@commitlint/config-conventional/15.0.0
+  '@iconify-json/ep': registry.npmmirror.com/@iconify-json/ep/1.0.1
   '@intlify/vite-plugin-vue-i18n': registry.npmmirror.com/@intlify/vite-plugin-vue-i18n/3.2.1_vite@2.6.14+vue-i18n@9.1.9
   '@typescript-eslint/eslint-plugin': registry.npmmirror.com/@typescript-eslint/eslint-plugin/5.6.0_16d83f5c41c3abb1061a82b07c18e4f3
   '@typescript-eslint/parser': registry.npmmirror.com/@typescript-eslint/parser/5.6.0_eslint@8.4.1+typescript@4.5.2
@@ -80,6 +88,7 @@ devDependencies:
   stylelint-order: registry.npmmirror.com/stylelint-order/5.0.0_stylelint@14.1.0
   typescript: registry.npmmirror.com/typescript/4.5.2
   unplugin-auto-import: registry.npmmirror.com/unplugin-auto-import/0.5.1_@vueuse+core@7.1.2+vite@2.6.14
+  unplugin-icons: registry.npmmirror.com/unplugin-icons/0.12.23_vite@2.6.14
   unplugin-vue-components: registry.npmmirror.com/unplugin-vue-components/0.17.6_vite@2.6.14+vue@3.2.24
   vite: registry.npmmirror.com/vite/2.6.14_less@4.1.2
   vite-plugin-eslint: registry.nlark.com/vite-plugin-eslint/1.3.0_vite@2.6.14
@@ -87,6 +96,7 @@ devDependencies:
   vite-plugin-windicss: registry.npmmirror.com/vite-plugin-windicss/1.5.4_vite@2.6.14
   vue-tsc: registry.npmmirror.com/vue-tsc/0.3.0_typescript@4.5.2
   windicss: registry.npmmirror.com/windicss/3.2.1
+  windicss-analysis: registry.npmmirror.com/windicss-analysis/0.3.5
 
 packages:
   registry.nlark.com/@antfu/utils/0.3.0:
@@ -639,6 +649,17 @@ packages:
     engines: { node: '>=8' }
     dev: true
 
+  registry.nlark.com/boolbase/1.0.0:
+    resolution:
+      {
+        integrity: sha1-aN/1++YMUes3cl6p4+0xDcwed24=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.nlark.com/boolbase/download/boolbase-1.0.0.tgz
+      }
+    name: boolbase
+    version: 1.0.0
+    dev: true
+
   registry.nlark.com/braces/3.0.2:
     resolution:
       {
@@ -728,6 +749,43 @@ packages:
       is-regex: registry.nlark.com/is-regex/1.1.4
     dev: true
 
+  registry.nlark.com/cheerio-select/1.5.0:
+    resolution:
+      {
+        integrity: sha1-+vPa6zGxfF4anavO4oiq+Kr6WCM=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.nlark.com/cheerio-select/download/cheerio-select-1.5.0.tgz
+      }
+    name: cheerio-select
+    version: 1.5.0
+    dependencies:
+      css-select: registry.nlark.com/css-select/4.1.3
+      css-what: registry.npmmirror.com/css-what/5.1.0
+      domelementtype: registry.nlark.com/domelementtype/2.2.0
+      domhandler: registry.npmmirror.com/domhandler/4.3.0
+      domutils: registry.nlark.com/domutils/2.8.0
+    dev: true
+
+  registry.nlark.com/cheerio/1.0.0-rc.10:
+    resolution:
+      {
+        integrity: sha1-K6Pc38wm55VvwfRA5h1RxkM3nz4=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.nlark.com/cheerio/download/cheerio-1.0.0-rc.10.tgz
+      }
+    name: cheerio
+    version: 1.0.0-rc.10
+    engines: { node: '>= 6' }
+    dependencies:
+      cheerio-select: registry.nlark.com/cheerio-select/1.5.0
+      dom-serializer: registry.nlark.com/dom-serializer/1.3.2
+      domhandler: registry.npmmirror.com/domhandler/4.3.0
+      htmlparser2: registry.npmmirror.com/htmlparser2/6.1.0
+      parse5: registry.nlark.com/parse5/6.0.1
+      parse5-htmlparser2-tree-adapter: registry.nlark.com/parse5-htmlparser2-tree-adapter/6.0.1
+      tslib: registry.nlark.com/tslib/2.3.1
+    dev: true
+
   registry.nlark.com/clean-stack/2.2.0:
     resolution:
       {
@@ -882,6 +940,23 @@ packages:
     version: 0.0.1
     dev: true
 
+  registry.nlark.com/connect/3.7.0:
+    resolution:
+      {
+        integrity: sha1-XUk0iRDKpeB6AYALAw0MNfIEhPg=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.nlark.com/connect/download/connect-3.7.0.tgz
+      }
+    name: connect
+    version: 3.7.0
+    engines: { node: '>= 0.10.0' }
+    dependencies:
+      debug: registry.npmmirror.com/debug/2.6.9
+      finalhandler: registry.nlark.com/finalhandler/1.1.2
+      parseurl: registry.nlark.com/parseurl/1.3.3
+      utils-merge: registry.nlark.com/utils-merge/1.0.1
+    dev: true
+
   registry.nlark.com/constantinople/4.0.1:
     resolution:
       {
@@ -1009,6 +1084,23 @@ packages:
       which: registry.nlark.com/which/2.0.2
     dev: true
 
+  registry.nlark.com/css-select/4.1.3:
+    resolution:
+      {
+        integrity: sha1-pwRA9wMX8maRGK10/xBeZYSccGc=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.nlark.com/css-select/download/css-select-4.1.3.tgz
+      }
+    name: css-select
+    version: 4.1.3
+    dependencies:
+      boolbase: registry.nlark.com/boolbase/1.0.0
+      css-what: registry.npmmirror.com/css-what/5.1.0
+      domhandler: registry.npmmirror.com/domhandler/4.3.0
+      domutils: registry.nlark.com/domutils/2.8.0
+      nth-check: registry.nlark.com/nth-check/2.0.1
+    dev: true
+
   registry.nlark.com/cssesc/3.0.0:
     resolution:
       {
@@ -1222,6 +1314,17 @@ packages:
       is-obj: registry.nlark.com/is-obj/2.0.0
     dev: true
 
+  registry.nlark.com/ee-first/1.1.1:
+    resolution:
+      {
+        integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.nlark.com/ee-first/download/ee-first-1.1.1.tgz
+      }
+    name: ee-first
+    version: 1.1.1
+    dev: true
+
   registry.nlark.com/emmet/2.3.4:
     resolution:
       {
@@ -1236,6 +1339,18 @@ packages:
       '@emmetio/css-abbreviation': registry.nlark.com/@emmetio/css-abbreviation/2.1.4
     dev: true
 
+  registry.nlark.com/encodeurl/1.0.2:
+    resolution:
+      {
+        integrity: sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.nlark.com/encodeurl/download/encodeurl-1.0.2.tgz
+      }
+    name: encodeurl
+    version: 1.0.2
+    engines: { node: '>= 0.8' }
+    dev: true
+
   registry.nlark.com/end-of-stream/1.4.4:
     resolution:
       {
@@ -1327,6 +1442,17 @@ packages:
     engines: { node: '>=6' }
     dev: true
 
+  registry.nlark.com/escape-html/1.0.3:
+    resolution:
+      {
+        integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.nlark.com/escape-html/download/escape-html-1.0.3.tgz
+      }
+    name: escape-html
+    version: 1.0.3
+    dev: true
+
   registry.nlark.com/escape-string-regexp/1.0.5:
     resolution:
       {
@@ -1635,6 +1761,26 @@ packages:
       to-regex-range: registry.nlark.com/to-regex-range/5.0.1
     dev: true
 
+  registry.nlark.com/finalhandler/1.1.2:
+    resolution:
+      {
+        integrity: sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.nlark.com/finalhandler/download/finalhandler-1.1.2.tgz
+      }
+    name: finalhandler
+    version: 1.1.2
+    engines: { node: '>= 0.8' }
+    dependencies:
+      debug: registry.npmmirror.com/debug/2.6.9
+      encodeurl: registry.nlark.com/encodeurl/1.0.2
+      escape-html: registry.nlark.com/escape-html/1.0.3
+      on-finished: registry.nlark.com/on-finished/2.3.0
+      parseurl: registry.nlark.com/parseurl/1.3.3
+      statuses: registry.nlark.com/statuses/1.5.0
+      unpipe: registry.nlark.com/unpipe/1.0.0
+    dev: true
+
   registry.nlark.com/find-node-modules/2.1.2:
     resolution:
       {
@@ -1680,7 +1826,7 @@ packages:
       {
         integrity: sha1-n/YbZV3eU/s0qC34S7IUzoAuF8E=,
         registry: https://registry.npm.taobao.org/,
-        tarball: https://registry.nlark.com/fs-extra/download/fs-extra-10.0.0.tgz
+        tarball: https://registry.nlark.com/fs-extra/download/fs-extra-10.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ffs-extra%2Fdownload%2Ffs-extra-10.0.0.tgz
       }
     name: fs-extra
     version: 10.0.0
@@ -2355,7 +2501,6 @@ packages:
     name: is-plain-object
     version: 5.0.0
     engines: { node: '>=0.10.0' }
-    dev: true
 
   registry.nlark.com/is-promise/2.2.2:
     resolution:
@@ -2795,7 +2940,6 @@ packages:
       }
     name: lodash
     version: 4.17.21
-    dev: true
 
   registry.nlark.com/longest/2.0.1:
     resolution:
@@ -3109,6 +3253,19 @@ packages:
     version: 0.2.0
     dev: true
 
+  registry.nlark.com/nth-check/2.0.1:
+    resolution:
+      {
+        integrity: sha1-Lv4WL1w9oGoolZ+9PbddvuqfD8I=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.nlark.com/nth-check/download/nth-check-2.0.1.tgz
+      }
+    name: nth-check
+    version: 2.0.1
+    dependencies:
+      boolbase: registry.nlark.com/boolbase/1.0.0
+    dev: true
+
   registry.nlark.com/object-assign/4.1.1:
     resolution:
       {
@@ -3121,6 +3278,20 @@ packages:
     engines: { node: '>=0.10.0' }
     dev: true
 
+  registry.nlark.com/on-finished/2.3.0:
+    resolution:
+      {
+        integrity: sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.nlark.com/on-finished/download/on-finished-2.3.0.tgz
+      }
+    name: on-finished
+    version: 2.3.0
+    engines: { node: '>= 0.8' }
+    dependencies:
+      ee-first: registry.nlark.com/ee-first/1.1.1
+    dev: true
+
   registry.nlark.com/once/1.4.0:
     resolution:
       {
@@ -3261,12 +3432,48 @@ packages:
     engines: { node: '>=0.10.0' }
     dev: true
 
+  registry.nlark.com/parse5-htmlparser2-tree-adapter/6.0.1:
+    resolution:
+      {
+        integrity: sha1-LN+a2CMyEUA3DU2/XT6Sx8jdxuY=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.nlark.com/parse5-htmlparser2-tree-adapter/download/parse5-htmlparser2-tree-adapter-6.0.1.tgz
+      }
+    name: parse5-htmlparser2-tree-adapter
+    version: 6.0.1
+    dependencies:
+      parse5: registry.nlark.com/parse5/6.0.1
+    dev: true
+
+  registry.nlark.com/parse5/6.0.1:
+    resolution:
+      {
+        integrity: sha1-4aHAhcVps9wIMhGE8Zo5zCf3wws=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.nlark.com/parse5/download/parse5-6.0.1.tgz
+      }
+    name: parse5
+    version: 6.0.1
+    dev: true
+
+  registry.nlark.com/parseurl/1.3.3:
+    resolution:
+      {
+        integrity: sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.nlark.com/parseurl/download/parseurl-1.3.3.tgz
+      }
+    name: parseurl
+    version: 1.3.3
+    engines: { node: '>= 0.8' }
+    dev: true
+
   registry.nlark.com/path-exists/4.0.0:
     resolution:
       {
         integrity: sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=,
         registry: https://registry.npm.taobao.org/,
-        tarball: https://registry.nlark.com/path-exists/download/path-exists-4.0.0.tgz
+        tarball: https://registry.nlark.com/path-exists/download/path-exists-4.0.0.tgz?cache=0&sync_timestamp=1631506047425&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpath-exists%2Fdownload%2Fpath-exists-4.0.0.tgz
       }
     name: path-exists
     version: 4.0.0
@@ -3993,7 +4200,7 @@ packages:
       {
         integrity: sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=,
         registry: https://registry.npm.taobao.org/,
-        tarball: https://registry.nlark.com/semver/download/semver-5.7.1.tgz
+        tarball: https://registry.nlark.com/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1631500167672&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz
       }
     name: semver
     version: 5.7.1
@@ -4005,7 +4212,7 @@ packages:
       {
         integrity: sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=,
         registry: https://registry.npm.taobao.org/,
-        tarball: https://registry.nlark.com/semver/download/semver-6.3.0.tgz
+        tarball: https://registry.nlark.com/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1631500167672&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz
       }
     name: semver
     version: 6.3.0
@@ -4017,7 +4224,7 @@ packages:
       {
         integrity: sha1-C2Ich5NI2JmOSw5L6Us/EuYBjvc=,
         registry: https://registry.npm.taobao.org/,
-        tarball: https://registry.nlark.com/semver/download/semver-7.3.5.tgz?cache=0&sync_timestamp=1631501920740&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsemver%2Fdownload%2Fsemver-7.3.5.tgz
+        tarball: https://registry.nlark.com/semver/download/semver-7.3.5.tgz
       }
     name: semver
     version: 7.3.5
@@ -4195,6 +4402,18 @@ packages:
     version: 1.0.3
     dev: true
 
+  registry.nlark.com/statuses/1.5.0:
+    resolution:
+      {
+        integrity: sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.nlark.com/statuses/download/statuses-1.5.0.tgz
+      }
+    name: statuses
+    version: 1.5.0
+    engines: { node: '>= 0.6' }
+    dev: true
+
   registry.nlark.com/string-argv/0.3.1:
     resolution:
       {
@@ -4402,6 +4621,18 @@ packages:
     version: 1.0.0
     dev: true
 
+  registry.nlark.com/totalist/1.1.0:
+    resolution:
+      {
+        integrity: sha1-pNZaPlRlF3AePlw3pHpwrJf+Vt8=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.nlark.com/totalist/download/totalist-1.1.0.tgz
+      }
+    name: totalist
+    version: 1.1.0
+    engines: { node: '>=6' }
+    dev: true
+
   registry.nlark.com/trim-newlines/3.0.1:
     resolution:
       {
@@ -4516,6 +4747,18 @@ packages:
     engines: { node: '>= 10.0.0' }
     dev: true
 
+  registry.nlark.com/unpipe/1.0.0:
+    resolution:
+      {
+        integrity: sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.nlark.com/unpipe/download/unpipe-1.0.0.tgz
+      }
+    name: unpipe
+    version: 1.0.0
+    engines: { node: '>= 0.8' }
+    dev: true
+
   registry.nlark.com/upath/2.0.1:
     resolution:
       {
@@ -4552,6 +4795,18 @@ packages:
     version: 1.0.2
     dev: true
 
+  registry.nlark.com/utils-merge/1.0.1:
+    resolution:
+      {
+        integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.nlark.com/utils-merge/download/utils-merge-1.0.1.tgz
+      }
+    name: utils-merge
+    version: 1.0.1
+    engines: { node: '>= 0.4.0' }
+    dev: true
+
   registry.nlark.com/v8-compile-cache/2.3.0:
     resolution:
       {
@@ -4807,6 +5062,20 @@ packages:
     engines: { node: '>=10' }
     dev: true
 
+  registry.npmmirror.com/@antfu/install-pkg/0.1.0:
+    resolution:
+      {
+        integrity: sha1-jYxhggy8MuXDfYLVFUha0+6b0FI=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.npmmirror.com/@antfu/install-pkg/download/@antfu/install-pkg-0.1.0.tgz
+      }
+    name: '@antfu/install-pkg'
+    version: 0.1.0
+    dependencies:
+      execa: registry.npmmirror.com/execa/5.1.1
+      find-up: registry.npmmirror.com/find-up/5.0.0
+    dev: true
+
   registry.npmmirror.com/@babel/code-frame/7.12.11:
     resolution:
       {
@@ -5520,6 +5789,18 @@ packages:
       chalk: registry.npmmirror.com/chalk/4.1.2
     dev: true
 
+  registry.npmmirror.com/@element-plus/icons/0.0.11:
+    resolution:
+      {
+        integrity: sha1-mxh8ACd0VIuRGFDRf6X8L5pRX1c=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.npmmirror.com/@element-plus/icons/download/@element-plus/icons-0.0.11.tgz
+      }
+    name: '@element-plus/icons'
+    version: 0.0.11
+    deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+    dev: false
+
   registry.npmmirror.com/@endemolshinegroup/cosmiconfig-typescript-loader/3.0.2_b67f536f129c730ed129a6d21d223ba9:
     resolution:
       {
@@ -5638,6 +5919,43 @@ packages:
     version: 1.2.1
     dev: true
 
+  registry.npmmirror.com/@iconify-json/ep/1.0.1:
+    resolution:
+      {
+        integrity: sha512-fvbjV9/XSZKzTJbtegB4hgAPV7QUu8LmqSo00ngpWaZxtvKYBAhykYfhtPtBASUJxpr5JacoH4+sITINdSh+9g==,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.npmmirror.com/@iconify-json/ep/download/@iconify-json/ep-1.0.1.tgz
+      }
+    name: '@iconify-json/ep'
+    version: 1.0.1
+    dependencies:
+      '@iconify/types': registry.npmmirror.com/@iconify/types/1.0.12
+    dev: true
+
+  registry.npmmirror.com/@iconify/types/1.0.12:
+    resolution:
+      {
+        integrity: sha512-6er6wSGF3hgc1JEZqiGpg21CTCjHBYOUwqLmb2Idzkjiw6ogalGP0ZMLVutCzah+0WB4yP+Zd2oVPN8jvJ+Ftg==,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.npmmirror.com/@iconify/types/download/@iconify/types-1.0.12.tgz
+      }
+    name: '@iconify/types'
+    version: 1.0.12
+    dev: true
+
+  registry.npmmirror.com/@iconify/utils/1.0.20:
+    resolution:
+      {
+        integrity: sha512-J5IriR8KeANs8vIEFKWzOlOvNgZHkwqkmqaIwvqtuDbBeFHtXGfM/LYMDmjtRJ0AAa7f254qw6TK7gAibYfHUA==,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.npmmirror.com/@iconify/utils/download/@iconify/utils-1.0.20.tgz
+      }
+    name: '@iconify/utils'
+    version: 1.0.20
+    dependencies:
+      '@iconify/types': registry.npmmirror.com/@iconify/types/1.0.12
+    dev: true
+
   registry.npmmirror.com/@intlify/bundle-utils/2.1.0_vue-i18n@9.1.9:
     resolution:
       {
@@ -5831,6 +6149,28 @@ packages:
       '@intlify/shared': registry.npmmirror.com/@intlify/shared/9.1.9
     dev: false
 
+  registry.npmmirror.com/@polka/url/1.0.0-next.21:
+    resolution:
+      {
+        integrity: sha1-XeWiOFo1MJQn9gEZkrVEUU1VmqE=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.npmmirror.com/@polka/url/download/@polka/url-1.0.0-next.21.tgz
+      }
+    name: '@polka/url'
+    version: 1.0.0-next.21
+    dev: true
+
+  registry.npmmirror.com/@popperjs/core/2.11.0:
+    resolution:
+      {
+        integrity: sha512-zrsUxjLOKAzdewIDRWy9nsV1GQsKBCWaGwsZQlCgr6/q+vjyZhFgqedLfFBuI9anTPEUT4APq9Mu0SZBTzIcGQ==,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.npmmirror.com/@popperjs/core/download/@popperjs/core-2.11.0.tgz
+      }
+    name: '@popperjs/core'
+    version: 2.11.0
+    dev: false
+
   registry.npmmirror.com/@types/json-schema/7.0.9:
     resolution:
       {
@@ -6457,7 +6797,7 @@ packages:
       {
         integrity: sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=,
         registry: https://registry.npm.taobao.org/,
-        tarball: https://registry.npmmirror.com/acorn/download/acorn-7.4.1.tgz?cache=0&sync_timestamp=1637226362293&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Facorn%2Fdownload%2Facorn-7.4.1.tgz
+        tarball: https://registry.npmmirror.com/acorn/download/acorn-7.4.1.tgz
       }
     name: acorn
     version: 7.4.1
@@ -6470,7 +6810,7 @@ packages:
       {
         integrity: sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==,
         registry: https://registry.npm.taobao.org/,
-        tarball: https://registry.npmmirror.com/acorn/download/acorn-8.6.0.tgz?cache=0&sync_timestamp=1637226362293&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Facorn%2Fdownload%2Facorn-8.6.0.tgz
+        tarball: https://registry.npmmirror.com/acorn/download/acorn-8.6.0.tgz
       }
     name: acorn
     version: 8.6.0
@@ -6510,6 +6850,17 @@ packages:
       uri-js: registry.nlark.com/uri-js/4.4.1
     dev: true
 
+  registry.npmmirror.com/async-validator/4.0.7:
+    resolution:
+      {
+        integrity: sha1-A0oP0hA6ay6/AQ2nUYO+wpkkev4=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.npmmirror.com/async-validator/download/async-validator-4.0.7.tgz
+      }
+    name: async-validator
+    version: 4.0.7
+    dev: false
+
   registry.npmmirror.com/autoprefixer/10.4.0_postcss@8.4.4:
     resolution:
       {
@@ -6567,6 +6918,18 @@ packages:
       picocolors: registry.npmmirror.com/picocolors/1.0.0
     dev: true
 
+  registry.npmmirror.com/cac/6.7.12:
+    resolution:
+      {
+        integrity: sha512-rM7E2ygtMkJqD9c7WnFU6fruFcN3xe4FM5yUmgxhZzIKJk4uHl9U/fhwdajGFQbQuv43FAUo1Fe8gX/oIKDeSA==,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.npmmirror.com/cac/download/cac-6.7.12.tgz
+      }
+    name: cac
+    version: 6.7.12
+    engines: { node: '>=8' }
+    dev: true
+
   registry.npmmirror.com/camelcase-keys/6.2.2:
     resolution:
       {
@@ -6798,6 +7161,18 @@ packages:
       through2: registry.nlark.com/through2/4.0.2
     dev: true
 
+  registry.npmmirror.com/css-what/5.1.0:
+    resolution:
+      {
+        integrity: sha1-P3tweq32M7r2LCzrhXm1RbtA9/4=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.npmmirror.com/css-what/download/css-what-5.1.0.tgz
+      }
+    name: css-what
+    version: 5.1.0
+    engines: { node: '>= 6' }
+    dev: true
+
   registry.npmmirror.com/csstype/2.6.19:
     resolution:
       {
@@ -6809,6 +7184,30 @@ packages:
     version: 2.6.19
     dev: false
 
+  registry.npmmirror.com/dayjs/1.10.7:
+    resolution:
+      {
+        integrity: sha1-LPX5Gt0oEWdIRAhmoKHSbzps5Gg=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.npmmirror.com/dayjs/download/dayjs-1.10.7.tgz?cache=0&sync_timestamp=1632743415328&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fdayjs%2Fdownload%2Fdayjs-1.10.7.tgz
+      }
+    name: dayjs
+    version: 1.10.7
+    dev: false
+
+  registry.npmmirror.com/debug/2.6.9:
+    resolution:
+      {
+        integrity: sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.npmmirror.com/debug/download/debug-2.6.9.tgz
+      }
+    name: debug
+    version: 2.6.9
+    dependencies:
+      ms: registry.npmmirror.com/ms/2.0.0
+    dev: true
+
   registry.npmmirror.com/debug/3.2.7:
     resolution:
       {
@@ -6875,6 +7274,19 @@ packages:
     engines: { node: '>=0.10.0' }
     dev: true
 
+  registry.npmmirror.com/declass/0.0.1:
+    resolution:
+      {
+        integrity: sha1-LDy9peSsZrxEW4vWGqVEm/btOdE=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.npmmirror.com/declass/download/declass-0.0.1.tgz
+      }
+    name: declass
+    version: 0.0.1
+    dependencies:
+      cheerio: registry.nlark.com/cheerio/1.0.0-rc.10
+    dev: true
+
   registry.npmmirror.com/domhandler/4.3.0:
     resolution:
       {
@@ -6900,6 +7312,32 @@ packages:
     version: 1.4.12
     dev: true
 
+  registry.npmmirror.com/element-plus/1.2.0-beta.5_vue@3.2.24:
+    resolution:
+      {
+        integrity: sha512-8KNGsNZ6RjVJ7kmxq/WLeTBMhVxSjfaGdW2QdcdXz4km1MgxbyBfdiNGVQG4XH/n+hbtLFldCPw0mVT4vkncuA==,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.npmmirror.com/element-plus/download/element-plus-1.2.0-beta.5.tgz
+      }
+    id: registry.npmmirror.com/element-plus/1.2.0-beta.5
+    name: element-plus
+    version: 1.2.0-beta.5
+    peerDependencies:
+      vue: ^3.2.0
+    dependencies:
+      '@element-plus/icons': registry.npmmirror.com/@element-plus/icons/0.0.11
+      '@popperjs/core': registry.npmmirror.com/@popperjs/core/2.11.0
+      '@vueuse/core': registry.npmmirror.com/@vueuse/core/7.1.2_vue@3.2.24
+      async-validator: registry.npmmirror.com/async-validator/4.0.7
+      dayjs: registry.npmmirror.com/dayjs/1.10.7
+      lodash: registry.nlark.com/lodash/4.17.21
+      memoize-one: registry.npmmirror.com/memoize-one/6.0.0
+      normalize-wheel-es: registry.npmmirror.com/normalize-wheel-es/1.1.1
+      vue: registry.npmmirror.com/vue/3.2.24
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+    dev: false
+
   registry.npmmirror.com/emoji-regex/8.0.0:
     resolution:
       {
@@ -7318,7 +7756,7 @@ packages:
       {
         integrity: sha1-MOvR73wv3/AcOk8VEESvJfqwUj4=,
         registry: https://registry.npm.taobao.org/,
-        tarball: https://registry.npmmirror.com/eslint-visitor-keys/download/eslint-visitor-keys-1.3.0.tgz?cache=0&sync_timestamp=1636378498011&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Feslint-visitor-keys%2Fdownload%2Feslint-visitor-keys-1.3.0.tgz
+        tarball: https://registry.npmmirror.com/eslint-visitor-keys/download/eslint-visitor-keys-1.3.0.tgz
       }
     name: eslint-visitor-keys
     version: 1.3.0
@@ -7330,7 +7768,7 @@ packages:
       {
         integrity: sha1-9lMoJZMFknOSyTjtROsKXJsr0wM=,
         registry: https://registry.npm.taobao.org/,
-        tarball: https://registry.npmmirror.com/eslint-visitor-keys/download/eslint-visitor-keys-2.1.0.tgz?cache=0&sync_timestamp=1636378498011&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Feslint-visitor-keys%2Fdownload%2Feslint-visitor-keys-2.1.0.tgz
+        tarball: https://registry.npmmirror.com/eslint-visitor-keys/download/eslint-visitor-keys-2.1.0.tgz
       }
     name: eslint-visitor-keys
     version: 2.1.0
@@ -7595,7 +8033,7 @@ packages:
       {
         integrity: sha1-TJKBnstwg1YeT0okCoa+UZj1Nvw=,
         registry: https://registry.npm.taobao.org/,
-        tarball: https://registry.npmmirror.com/find-up/download/find-up-5.0.0.tgz
+        tarball: https://registry.npmmirror.com/find-up/download/find-up-5.0.0.tgz?cache=0&sync_timestamp=1633619099767&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Ffind-up%2Fdownload%2Ffind-up-5.0.0.tgz
       }
     name: find-up
     version: 5.0.0
@@ -7911,7 +8349,7 @@ packages:
       {
         integrity: sha1-LORbJlz8jckevXClIEgHz5FSkbw=,
         registry: https://registry.npm.taobao.org/,
-        tarball: https://registry.npmmirror.com/jiti/download/jiti-1.12.9.tgz
+        tarball: https://registry.npmmirror.com/jiti/download/jiti-1.12.9.tgz?cache=0&sync_timestamp=1636330737910&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fjiti%2Fdownload%2Fjiti-1.12.9.tgz
       }
     name: jiti
     version: 1.12.9
@@ -8106,6 +8544,17 @@ packages:
     version: 2.1.3
     dev: true
 
+  registry.npmmirror.com/memoize-one/6.0.0:
+    resolution:
+      {
+        integrity: sha1-slkbhx7YKUiu5HJ9xqvO7qyMEEU=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.npmmirror.com/memoize-one/download/memoize-one-6.0.0.tgz
+      }
+    name: memoize-one
+    version: 6.0.0
+    dev: false
+
   registry.npmmirror.com/meow/8.1.2:
     resolution:
       {
@@ -8183,12 +8632,35 @@ packages:
       import-meta-resolve: registry.npmmirror.com/import-meta-resolve/1.1.1
     dev: true
 
+  registry.npmmirror.com/mrmime/1.0.0:
+    resolution:
+      {
+        integrity: sha1-FNOH8FhaUjPSkbq6M5sGN1KiOYs=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.npmmirror.com/mrmime/download/mrmime-1.0.0.tgz
+      }
+    name: mrmime
+    version: 1.0.0
+    engines: { node: '>=10' }
+    dev: true
+
+  registry.npmmirror.com/ms/2.0.0:
+    resolution:
+      {
+        integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.npmmirror.com/ms/download/ms-2.0.0.tgz
+      }
+    name: ms
+    version: 2.0.0
+    dev: true
+
   registry.npmmirror.com/ms/2.1.2:
     resolution:
       {
         integrity: sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=,
         registry: https://registry.npm.taobao.org/,
-        tarball: https://registry.npmmirror.com/ms/download/ms-2.1.2.tgz?cache=0&sync_timestamp=1632788710719&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fms%2Fdownload%2Fms-2.1.2.tgz
+        tarball: https://registry.npmmirror.com/ms/download/ms-2.1.2.tgz
       }
     name: ms
     version: 2.1.2
@@ -8235,6 +8707,17 @@ packages:
     version: 2.0.1
     dev: true
 
+  registry.npmmirror.com/normalize-wheel-es/1.1.1:
+    resolution:
+      {
+        integrity: sha1-qAlttqVvlDMtiE/Y6+2ojy/HlWk=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.npmmirror.com/normalize-wheel-es/download/normalize-wheel-es-1.1.1.tgz
+      }
+    name: normalize-wheel-es
+    version: 1.1.1
+    dev: false
+
   registry.npmmirror.com/npm-run-path/4.0.1:
     resolution:
       {
@@ -8538,6 +9021,22 @@ packages:
     version: 3.0.6
     dev: true
 
+  registry.npmmirror.com/sirv/1.0.19:
+    resolution:
+      {
+        integrity: sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.npmmirror.com/sirv/download/sirv-1.0.19.tgz
+      }
+    name: sirv
+    version: 1.0.19
+    engines: { node: '>= 10' }
+    dependencies:
+      '@polka/url': registry.npmmirror.com/@polka/url/1.0.0-next.21
+      mrmime: registry.npmmirror.com/mrmime/1.0.0
+      totalist: registry.nlark.com/totalist/1.1.0
+    dev: true
+
   registry.npmmirror.com/source-map-js/1.0.1:
     resolution:
       {
@@ -9029,6 +9528,45 @@ packages:
       - webpack
     dev: true
 
+  registry.npmmirror.com/unplugin-icons/0.12.23_vite@2.6.14:
+    resolution:
+      {
+        integrity: sha512-jhCogt+/3WEdPrfHkUGwiLnNJAOrE469J/Zlsh57KAaeEDxrw+PMqXDXRFA/fZjtal/btGPFcDOeQPPHGW6JHg==,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.npmmirror.com/unplugin-icons/download/unplugin-icons-0.12.23.tgz
+      }
+    id: registry.npmmirror.com/unplugin-icons/0.12.23
+    name: unplugin-icons
+    version: 0.12.23
+    peerDependencies:
+      '@svgr/core': ^5.5.0
+      '@vue/compiler-sfc': ^3.0.2
+      vue-template-compiler: ^2.6.12
+      vue-template-es2015-compiler: ^1.9.0
+    peerDependenciesMeta:
+      '@svgr/core':
+        optional: true
+      '@vue/compiler-sfc':
+        optional: true
+      vue-template-compiler:
+        optional: true
+      vue-template-es2015-compiler:
+        optional: true
+    dependencies:
+      '@antfu/install-pkg': registry.npmmirror.com/@antfu/install-pkg/0.1.0
+      '@antfu/utils': registry.nlark.com/@antfu/utils/0.3.0
+      '@iconify/utils': registry.npmmirror.com/@iconify/utils/1.0.20
+      debug: registry.npmmirror.com/debug/4.3.3
+      kolorist: registry.nlark.com/kolorist/1.5.0
+      local-pkg: registry.npmmirror.com/local-pkg/0.4.0
+      unplugin: registry.npmmirror.com/unplugin/0.2.21_vite@2.6.14
+    transitivePeerDependencies:
+      - rollup
+      - supports-color
+      - vite
+      - webpack
+    dev: true
+
   registry.npmmirror.com/unplugin-vue-components/0.17.6_vite@2.6.14+vue@3.2.24:
     resolution:
       {
@@ -9471,6 +10009,24 @@ packages:
       vscode-vue-languageservice: registry.npmmirror.com/vscode-vue-languageservice/0.27.30
     dev: true
 
+  registry.npmmirror.com/vue-types/4.1.1_vue@3.2.24:
+    resolution:
+      {
+        integrity: sha1-fXpOSgEkmlG22j+qMBJIwupfW5c=,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.npmmirror.com/vue-types/download/vue-types-4.1.1.tgz
+      }
+    id: registry.npmmirror.com/vue-types/4.1.1
+    name: vue-types
+    version: 4.1.1
+    engines: { node: '>=12.16.0' }
+    peerDependencies:
+      vue: ^2.0.0 || ^3.0.0
+    dependencies:
+      is-plain-object: registry.nlark.com/is-plain-object/5.0.0
+      vue: registry.npmmirror.com/vue/3.2.24
+    dev: false
+
   registry.npmmirror.com/vue/3.2.24:
     resolution:
       {
@@ -9488,6 +10044,28 @@ packages:
       '@vue/shared': registry.npmmirror.com/@vue/shared/3.2.24
     dev: false
 
+  registry.npmmirror.com/windicss-analysis/0.3.5:
+    resolution:
+      {
+        integrity: sha512-g7306c47Yc9c0nAhVLwVDVYt+MQmxGfpg1Q06mP4+j5nqCrJgh18Km4HyL8BABv7wo6BdUN7FeVtxb+u5TokxA==,
+        registry: https://registry.npm.taobao.org/,
+        tarball: https://registry.npmmirror.com/windicss-analysis/download/windicss-analysis-0.3.5.tgz
+      }
+    name: windicss-analysis
+    version: 0.3.5
+    hasBin: true
+    dependencies:
+      '@windicss/plugin-utils': registry.npmmirror.com/@windicss/plugin-utils/1.5.4
+      cac: registry.npmmirror.com/cac/6.7.12
+      connect: registry.nlark.com/connect/3.7.0
+      declass: registry.npmmirror.com/declass/0.0.1
+      fast-glob: registry.nlark.com/fast-glob/3.2.7
+      fs-extra: registry.nlark.com/fs-extra/10.0.0
+      sirv: registry.npmmirror.com/sirv/1.0.19
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
   registry.npmmirror.com/windicss/3.2.1:
     resolution:
       {

+ 10 - 1
src/App.vue

@@ -1,12 +1,15 @@
 <template>
   <div>sss</div>
   <div v:bg="blue-400 hover:blue-500 dark:blue-500 dark:hover:blue-600"> sssss </div>
-  <img alt="Vue logo" src="./assets/logo.png" />
   <div>sss</div>
   <HelloWorld msg="Hello Vue 3 + TypeScript + Vite" />
   <div>{{ t('test.about') }}</div>
   <div>{{ t('test2.go') }}</div>
   <button @click="change">切换语言</button>
+  <el-icon><ep-add-location /></el-icon>
+  <el-button size="mini">ss</el-button>
+  <el-radio v-model="radio1" label="1">Option 1</el-radio>
+  <el-radio v-model="radio1" label="2">Option 2</el-radio>
 </template>
 
 <script setup lang="ts">
@@ -15,7 +18,13 @@
 import HelloWorld from './components/HelloWorld.vue'
 const { t, availableLocales, locale } = useI18n()
 
+const rootStyle = document.documentElement.style
+console.log(rootStyle)
+const radio1 = ref('')
+
 function change() {
+  const color = useCssVar('--el-color-primary', document.documentElement)
+  color.value = '#df8543'
   const locales = availableLocales
   locale.value = locales[(locales.indexOf(locale.value) + 1) % locales.length]
 }

+ 2 - 0
src/styles/var.css

@@ -0,0 +1,2 @@
+:root {
+}

+ 2 - 0
src/styles/variable.less

@@ -0,0 +1,2 @@
+// 命名空间
+@namespace: vbf;

+ 194 - 0
src/types/auto-imports.d.ts

@@ -0,0 +1,194 @@
+// Generated by 'unplugin-auto-import'
+// We suggest you to commit this file into source control
+declare global {
+  const asyncComputed: typeof import('@vueuse/core')['asyncComputed']
+  const autoResetRef: typeof import('@vueuse/core')['autoResetRef']
+  const biSyncRef: typeof import('@vueuse/core')['biSyncRef']
+  const computed: typeof import('vue')['computed']
+  const computedInject: typeof import('@vueuse/core')['computedInject']
+  const controlledComputed: typeof import('@vueuse/core')['controlledComputed']
+  const controlledRef: typeof import('@vueuse/core')['controlledRef']
+  const createApp: typeof import('vue')['createApp']
+  const createEventHook: typeof import('@vueuse/core')['createEventHook']
+  const createGlobalState: typeof import('@vueuse/core')['createGlobalState']
+  const createReactiveFn: typeof import('@vueuse/core')['createReactiveFn']
+  const createSharedComposable: typeof import('@vueuse/core')['createSharedComposable']
+  const createUnrefFn: typeof import('@vueuse/core')['createUnrefFn']
+  const customRef: typeof import('vue')['customRef']
+  const debouncedRef: typeof import('@vueuse/core')['debouncedRef']
+  const debouncedWatch: typeof import('@vueuse/core')['debouncedWatch']
+  const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
+  const defineComponent: typeof import('vue')['defineComponent']
+  const eagerComputed: typeof import('@vueuse/core')['eagerComputed']
+  const effectScope: typeof import('vue')['effectScope']
+  const EffectScope: typeof import('vue')['EffectScope']
+  const extendRef: typeof import('@vueuse/core')['extendRef']
+  const getCurrentInstance: typeof import('vue')['getCurrentInstance']
+  const getCurrentScope: typeof import('vue')['getCurrentScope']
+  const h: typeof import('vue')['h']
+  const ignorableWatch: typeof import('@vueuse/core')['ignorableWatch']
+  const inject: typeof import('vue')['inject']
+  const isDefined: typeof import('@vueuse/core')['isDefined']
+  const isReadonly: typeof import('vue')['isReadonly']
+  const isRef: typeof import('vue')['isRef']
+  const makeDestructurable: typeof import('@vueuse/core')['makeDestructurable']
+  const markRaw: typeof import('vue')['markRaw']
+  const nextTick: typeof import('vue')['nextTick']
+  const onActivated: typeof import('vue')['onActivated']
+  const onBeforeMount: typeof import('vue')['onBeforeMount']
+  const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
+  const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
+  const onClickOutside: typeof import('@vueuse/core')['onClickOutside']
+  const onDeactivated: typeof import('vue')['onDeactivated']
+  const onErrorCaptured: typeof import('vue')['onErrorCaptured']
+  const onKeyStroke: typeof import('@vueuse/core')['onKeyStroke']
+  const onMounted: typeof import('vue')['onMounted']
+  const onRenderTracked: typeof import('vue')['onRenderTracked']
+  const onRenderTriggered: typeof import('vue')['onRenderTriggered']
+  const onScopeDispose: typeof import('vue')['onScopeDispose']
+  const onServerPrefetch: typeof import('vue')['onServerPrefetch']
+  const onStartTyping: typeof import('@vueuse/core')['onStartTyping']
+  const onUnmounted: typeof import('vue')['onUnmounted']
+  const onUpdated: typeof import('vue')['onUpdated']
+  const pausableWatch: typeof import('@vueuse/core')['pausableWatch']
+  const provide: typeof import('vue')['provide']
+  const reactify: typeof import('@vueuse/core')['reactify']
+  const reactifyObject: typeof import('@vueuse/core')['reactifyObject']
+  const reactive: typeof import('vue')['reactive']
+  const reactivePick: typeof import('@vueuse/core')['reactivePick']
+  const readonly: typeof import('vue')['readonly']
+  const ref: typeof import('vue')['ref']
+  const refDefault: typeof import('@vueuse/core')['refDefault']
+  const shallowReactive: typeof import('vue')['shallowReactive']
+  const shallowReadonly: typeof import('vue')['shallowReadonly']
+  const shallowRef: typeof import('vue')['shallowRef']
+  const syncRef: typeof import('@vueuse/core')['syncRef']
+  const templateRef: typeof import('@vueuse/core')['templateRef']
+  const throttledRef: typeof import('@vueuse/core')['throttledRef']
+  const throttledWatch: typeof import('@vueuse/core')['throttledWatch']
+  const toRaw: typeof import('vue')['toRaw']
+  const toReactive: typeof import('@vueuse/core')['toReactive']
+  const toRef: typeof import('vue')['toRef']
+  const toRefs: typeof import('vue')['toRefs']
+  const triggerRef: typeof import('vue')['triggerRef']
+  const tryOnBeforeUnmount: typeof import('@vueuse/core')['tryOnBeforeUnmount']
+  const tryOnMounted: typeof import('@vueuse/core')['tryOnMounted']
+  const tryOnScopeDispose: typeof import('@vueuse/core')['tryOnScopeDispose']
+  const tryOnUnmounted: typeof import('@vueuse/core')['tryOnUnmounted']
+  const unref: typeof import('vue')['unref']
+  const unrefElement: typeof import('@vueuse/core')['unrefElement']
+  const until: typeof import('@vueuse/core')['until']
+  const useActiveElement: typeof import('@vueuse/core')['useActiveElement']
+  const useAsyncQueue: typeof import('@vueuse/core')['useAsyncQueue']
+  const useAsyncState: typeof import('@vueuse/core')['useAsyncState']
+  const useAttrs: typeof import('vue')['useAttrs']
+  const useBase64: typeof import('@vueuse/core')['useBase64']
+  const useBattery: typeof import('@vueuse/core')['useBattery']
+  const useBreakpoints: typeof import('@vueuse/core')['useBreakpoints']
+  const useBrowserLocation: typeof import('@vueuse/core')['useBrowserLocation']
+  const useClamp: typeof import('@vueuse/core')['useClamp']
+  const useClipboard: typeof import('@vueuse/core')['useClipboard']
+  const useConfirmDialog: typeof import('@vueuse/core')['useConfirmDialog']
+  const useCounter: typeof import('@vueuse/core')['useCounter']
+  const useCssModule: typeof import('vue')['useCssModule']
+  const useCssVar: typeof import('@vueuse/core')['useCssVar']
+  const useDark: typeof import('@vueuse/core')['useDark']
+  const useDebounce: typeof import('@vueuse/core')['useDebounce']
+  const useDebouncedRefHistory: typeof import('@vueuse/core')['useDebouncedRefHistory']
+  const useDebounceFn: typeof import('@vueuse/core')['useDebounceFn']
+  const useDeviceMotion: typeof import('@vueuse/core')['useDeviceMotion']
+  const useDeviceOrientation: typeof import('@vueuse/core')['useDeviceOrientation']
+  const useDevicePixelRatio: typeof import('@vueuse/core')['useDevicePixelRatio']
+  const useDevicesList: typeof import('@vueuse/core')['useDevicesList']
+  const useDisplayMedia: typeof import('@vueuse/core')['useDisplayMedia']
+  const useDocumentVisibility: typeof import('@vueuse/core')['useDocumentVisibility']
+  const useDraggable: typeof import('@vueuse/core')['useDraggable']
+  const useElementBounding: typeof import('@vueuse/core')['useElementBounding']
+  const useElementHover: typeof import('@vueuse/core')['useElementHover']
+  const useElementSize: typeof import('@vueuse/core')['useElementSize']
+  const useElementVisibility: typeof import('@vueuse/core')['useElementVisibility']
+  const useEventBus: typeof import('@vueuse/core')['useEventBus']
+  const useEventListener: typeof import('@vueuse/core')['useEventListener']
+  const useEventSource: typeof import('@vueuse/core')['useEventSource']
+  const useEyeDropper: typeof import('@vueuse/core')['useEyeDropper']
+  const useFavicon: typeof import('@vueuse/core')['useFavicon']
+  const useFetch: typeof import('@vueuse/core')['useFetch']
+  const useFocus: typeof import('@vueuse/core')['useFocus']
+  const useFps: typeof import('@vueuse/core')['useFps']
+  const useFullscreen: typeof import('@vueuse/core')['useFullscreen']
+  const useGeolocation: typeof import('@vueuse/core')['useGeolocation']
+  const useI18n: typeof import('vue-i18n')['useI18n']
+  const useIdle: typeof import('@vueuse/core')['useIdle']
+  const useIntersectionObserver: typeof import('@vueuse/core')['useIntersectionObserver']
+  const useInterval: typeof import('@vueuse/core')['useInterval']
+  const useIntervalFn: typeof import('@vueuse/core')['useIntervalFn']
+  const useKeyModifier: typeof import('@vueuse/core')['useKeyModifier']
+  const useLastChanged: typeof import('@vueuse/core')['useLastChanged']
+  const useLocalStorage: typeof import('@vueuse/core')['useLocalStorage']
+  const useMagicKeys: typeof import('@vueuse/core')['useMagicKeys']
+  const useManualRefHistory: typeof import('@vueuse/core')['useManualRefHistory']
+  const useMediaControls: typeof import('@vueuse/core')['useMediaControls']
+  const useMediaQuery: typeof import('@vueuse/core')['useMediaQuery']
+  const useMemory: typeof import('@vueuse/core')['useMemory']
+  const useMounted: typeof import('@vueuse/core')['useMounted']
+  const useMouse: typeof import('@vueuse/core')['useMouse']
+  const useMouseInElement: typeof import('@vueuse/core')['useMouseInElement']
+  const useMousePressed: typeof import('@vueuse/core')['useMousePressed']
+  const useMutationObserver: typeof import('@vueuse/core')['useMutationObserver']
+  const useNetwork: typeof import('@vueuse/core')['useNetwork']
+  const useNow: typeof import('@vueuse/core')['useNow']
+  const useOnline: typeof import('@vueuse/core')['useOnline']
+  const usePageLeave: typeof import('@vueuse/core')['usePageLeave']
+  const useParallax: typeof import('@vueuse/core')['useParallax']
+  const usePermission: typeof import('@vueuse/core')['usePermission']
+  const usePointer: typeof import('@vueuse/core')['usePointer']
+  const usePointerSwipe: typeof import('@vueuse/core')['usePointerSwipe']
+  const usePreferredColorScheme: typeof import('@vueuse/core')['usePreferredColorScheme']
+  const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark']
+  const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages']
+  const useRafFn: typeof import('@vueuse/core')['useRafFn']
+  const useRefHistory: typeof import('@vueuse/core')['useRefHistory']
+  const useResizeObserver: typeof import('@vueuse/core')['useResizeObserver']
+  const useRoute: typeof import('vue-router')['useRoute']
+  const useRouter: typeof import('vue-router')['useRouter']
+  const useScriptTag: typeof import('@vueuse/core')['useScriptTag']
+  const useScroll: typeof import('@vueuse/core')['useScroll']
+  const useScrollLock: typeof import('@vueuse/core')['useScrollLock']
+  const useSessionStorage: typeof import('@vueuse/core')['useSessionStorage']
+  const useShare: typeof import('@vueuse/core')['useShare']
+  const useSlots: typeof import('vue')['useSlots']
+  const useSpeechRecognition: typeof import('@vueuse/core')['useSpeechRecognition']
+  const useSpeechSynthesis: typeof import('@vueuse/core')['useSpeechSynthesis']
+  const useStorage: typeof import('@vueuse/core')['useStorage']
+  const useSwipe: typeof import('@vueuse/core')['useSwipe']
+  const useTemplateRefsList: typeof import('@vueuse/core')['useTemplateRefsList']
+  const useThrottle: typeof import('@vueuse/core')['useThrottle']
+  const useThrottledRefHistory: typeof import('@vueuse/core')['useThrottledRefHistory']
+  const useThrottleFn: typeof import('@vueuse/core')['useThrottleFn']
+  const useTimeAgo: typeof import('@vueuse/core')['useTimeAgo']
+  const useTimeout: typeof import('@vueuse/core')['useTimeout']
+  const useTimeoutFn: typeof import('@vueuse/core')['useTimeoutFn']
+  const useTimestamp: typeof import('@vueuse/core')['useTimestamp']
+  const useTitle: typeof import('@vueuse/core')['useTitle']
+  const useToggle: typeof import('@vueuse/core')['useToggle']
+  const useTransition: typeof import('@vueuse/core')['useTransition']
+  const useUrlSearchParams: typeof import('@vueuse/core')['useUrlSearchParams']
+  const useUserMedia: typeof import('@vueuse/core')['useUserMedia']
+  const useVirtualList: typeof import('@vueuse/core')['useVirtualList']
+  const useVModel: typeof import('@vueuse/core')['useVModel']
+  const useVModels: typeof import('@vueuse/core')['useVModels']
+  const useWakeLock: typeof import('@vueuse/core')['useWakeLock']
+  const useWebSocket: typeof import('@vueuse/core')['useWebSocket']
+  const useWebWorker: typeof import('@vueuse/core')['useWebWorker']
+  const useWebWorkerFn: typeof import('@vueuse/core')['useWebWorkerFn']
+  const useWindowFocus: typeof import('@vueuse/core')['useWindowFocus']
+  const useWindowScroll: typeof import('@vueuse/core')['useWindowScroll']
+  const useWindowSize: typeof import('@vueuse/core')['useWindowSize']
+  const watch: typeof import('vue')['watch']
+  const watchAtMost: typeof import('@vueuse/core')['watchAtMost']
+  const watchEffect: typeof import('vue')['watchEffect']
+  const watchOnce: typeof import('@vueuse/core')['watchOnce']
+  const watchWithFilter: typeof import('@vueuse/core')['watchWithFilter']
+  const whenever: typeof import('@vueuse/core')['whenever']
+}
+export {}

+ 15 - 0
src/types/components.d.ts

@@ -0,0 +1,15 @@
+// generated by unplugin-vue-components
+// We suggest you to commit this file into source control
+// Read more: https://github.com/vuejs/vue-next/pull/3399
+
+declare module 'vue' {
+  export interface GlobalComponents {
+    ElButton: typeof import('element-plus/es')['ElButton']
+    ElIcon: typeof import('element-plus/es')['ElIcon']
+    ElRadio: typeof import('element-plus/es')['ElRadio']
+    EpAddLocation: typeof import('~icons/ep/add-location')['default']
+    HelloWorld: typeof import('./../components/HelloWorld.vue')['default']
+  }
+}
+
+export {}

+ 20 - 0
src/utils/prop-types.ts

@@ -0,0 +1,20 @@
+import { createTypes, VueTypesInterface } from 'vue-types'
+
+// 自定义扩展vue-types
+type PropTypes = VueTypesInterface & {}
+
+const propTypes: PropTypes = createTypes({
+  func: undefined,
+  bool: undefined,
+  string: undefined,
+  number: undefined,
+  object: undefined,
+  integer: undefined,
+  array: undefined
+})
+
+// 需要自定义扩展的类型
+// see: https://dwightjack.github.io/vue-types/advanced/extending-vue-types.html#the-extend-method
+propTypes.extend([])
+
+export { propTypes }

+ 3 - 2
tsconfig.json

@@ -23,7 +23,8 @@
     "paths": {
       "@/*": ["src/*"]
     },
-    "types": ["vite/client", "@intlify/vite-plugin-vue-i18n/client"]
+    "types": ["@intlify/vite-plugin-vue-i18n/client", "vite/client", "element-plus/global.d.ts"]
   },
-  "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"]
+  "include": ["src/**/*"],
+  "exclude": ["dist", "node_modules"]
 }

+ 14 - 5
vite.config.ts

@@ -10,6 +10,8 @@ import VueSetupExtend from 'vite-plugin-vue-setup-extend'
 import EslintPlugin from 'vite-plugin-eslint'
 import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
 import VueI18n from '@intlify/vite-plugin-vue-i18n'
+import Icons from 'unplugin-icons/vite'
+import IconsResolver from 'unplugin-icons/resolver'
 
 // https://vitejs.dev/config/
 const root = process.cwd()
@@ -44,15 +46,21 @@ export default ({ command, mode }: ConfigEnv): UserConfig => {
         ],
         dts: 'src/types/auto-imports.d.ts'
       }),
+      Icons({
+        compiler: 'vue3',
+        autoInstall: true
+      }),
       Components({
-        // allow auto load markdown components under `./src/components/`
         dirs: ['src/components'],
         extensions: ['vue', 'md'],
-        // allow auto import and register components used in markdown
         include: [/\.vue$/, /\.vue\?vue/, /\.md$/],
         // custom resolvers
         resolvers: [
-          [ElementPlusResolver()]
+          ElementPlusResolver(),
+          IconsResolver({
+            prefix: false,
+            enabledCollections : ['ep']
+          })
         ],
         dts: 'src/types/components.d.ts'
       }),
@@ -69,7 +77,7 @@ export default ({ command, mode }: ConfigEnv): UserConfig => {
     css: {
       preprocessorOptions: {
         less: {
-          // additionalData: '@import "./src/styles/variables.less";',
+          additionalData: '@import "./src/styles/variables.less";',
           javascriptEnabled: true
         }
       }
@@ -115,7 +123,8 @@ export default ({ command, mode }: ConfigEnv): UserConfig => {
     optimizeDeps: {
       include: [
         'vue',
-        'vue-router'
+        'vue-router',
+        'element-plus'
       ]
     }
   }

+ 12 - 3
windi.config.ts

@@ -1,4 +1,4 @@
-import { defineConfig } from 'vite-plugin-windicss'
+import { defineConfig } from 'windicss/helpers'
 
 export default defineConfig({
   extract: {
@@ -6,7 +6,16 @@ export default defineConfig({
     exclude: ['node_modules', '.git']
   },
   darkMode: 'class',
-  attributify: {
-    prefix: 'v:'
+  attributify: false,
+  theme: {
+    extend: {
+      screens: {
+        sm: '640px',
+        md: '768px',
+        lg: '1024px',
+        xl: '1280px',
+        '2xl': '1536px'
+      }
+    }
   }
 })