feat: 添加unplugin-vue-router插件

master
luoer 2023-10-13 17:25:23 +08:00
parent 907db1d3c9
commit 2f127bac40
8 changed files with 329 additions and 70 deletions

View File

@ -47,10 +47,11 @@
.loading-tip {
margin-top: 12px;
line-height: 1;
color: #888;
}
</style>
<div class="loading">
<img src="/assets/loading.svg" alt="loading" class="loading-image" />
<img src="./assets/loading.svg" alt="loading" class="loading-image" />
<h1 class="loading-title">欢迎访问%VITE_TITLE%</h1>
<div class="loading-tip">正在加载中, 请稍后...</div>
</div>

View File

@ -39,6 +39,7 @@
"unocss": "^0.49.8",
"unplugin-auto-import": "^0.13.0",
"unplugin-vue-components": "^0.23.0",
"unplugin-vue-router": "^0.7.0",
"vite": "^4.4.9",
"vite-plugin-mock": "^3.0.0",
"vite-plugin-pages": "^0.28.0",

View File

@ -82,6 +82,9 @@ devDependencies:
unplugin-vue-components:
specifier: ^0.23.0
version: 0.23.0(vue@3.3.4)
unplugin-vue-router:
specifier: ^0.7.0
version: 0.7.0(vue-router@4.2.4)(vue@3.3.4)
vite:
specifier: ^4.4.9
version: 4.4.9(less@4.2.0)
@ -208,7 +211,7 @@ packages:
'@babel/parser': 7.22.16
'@babel/template': 7.22.15
'@babel/traverse': 7.22.17
'@babel/types': 7.22.17
'@babel/types': 7.23.0
convert-source-map: 1.9.0
debug: 4.3.4
gensync: 1.0.0-beta.2
@ -222,7 +225,7 @@ packages:
resolution: {integrity: sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.22.17
'@babel/types': 7.23.0
'@jridgewell/gen-mapping': 0.3.3
'@jridgewell/trace-mapping': 0.3.19
jsesc: 2.5.2
@ -232,7 +235,7 @@ packages:
resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.22.17
'@babel/types': 7.23.0
dev: true
/@babel/helper-compilation-targets@7.22.15:
@ -274,28 +277,28 @@ packages:
engines: {node: '>=6.9.0'}
dependencies:
'@babel/template': 7.22.15
'@babel/types': 7.22.17
'@babel/types': 7.23.0
dev: true
/@babel/helper-hoist-variables@7.22.5:
resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.22.17
'@babel/types': 7.23.0
dev: true
/@babel/helper-member-expression-to-functions@7.22.15:
resolution: {integrity: sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.22.17
'@babel/types': 7.23.0
dev: true
/@babel/helper-module-imports@7.22.15:
resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.22.17
'@babel/types': 7.23.0
dev: true
/@babel/helper-module-transforms@7.22.17(@babel/core@7.22.17):
@ -309,14 +312,14 @@ packages:
'@babel/helper-module-imports': 7.22.15
'@babel/helper-simple-access': 7.22.5
'@babel/helper-split-export-declaration': 7.22.6
'@babel/helper-validator-identifier': 7.22.15
'@babel/helper-validator-identifier': 7.22.20
dev: true
/@babel/helper-optimise-call-expression@7.22.5:
resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.22.17
'@babel/types': 7.23.0
dev: true
/@babel/helper-plugin-utils@7.22.5:
@ -340,21 +343,21 @@ packages:
resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.22.17
'@babel/types': 7.23.0
dev: true
/@babel/helper-skip-transparent-expression-wrappers@7.22.5:
resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.22.17
'@babel/types': 7.23.0
dev: true
/@babel/helper-split-export-declaration@7.22.6:
resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.22.17
'@babel/types': 7.23.0
dev: true
/@babel/helper-string-parser@7.22.5:
@ -362,8 +365,8 @@ packages:
engines: {node: '>=6.9.0'}
dev: true
/@babel/helper-validator-identifier@7.22.15:
resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==}
/@babel/helper-validator-identifier@7.22.20:
resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
engines: {node: '>=6.9.0'}
dev: true
@ -378,7 +381,7 @@ packages:
dependencies:
'@babel/template': 7.22.15
'@babel/traverse': 7.22.17
'@babel/types': 7.22.17
'@babel/types': 7.23.0
transitivePeerDependencies:
- supports-color
dev: true
@ -387,7 +390,7 @@ packages:
resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/helper-validator-identifier': 7.22.15
'@babel/helper-validator-identifier': 7.22.20
chalk: 2.4.2
js-tokens: 4.0.0
dev: true
@ -397,7 +400,7 @@ packages:
engines: {node: '>=6.0.0'}
hasBin: true
dependencies:
'@babel/types': 7.22.17
'@babel/types': 7.23.0
dev: true
/@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.17):
@ -444,7 +447,7 @@ packages:
dependencies:
'@babel/code-frame': 7.22.13
'@babel/parser': 7.22.16
'@babel/types': 7.22.17
'@babel/types': 7.23.0
dev: true
/@babel/traverse@7.22.17:
@ -458,19 +461,19 @@ packages:
'@babel/helper-hoist-variables': 7.22.5
'@babel/helper-split-export-declaration': 7.22.6
'@babel/parser': 7.22.16
'@babel/types': 7.22.17
'@babel/types': 7.23.0
debug: 4.3.4
globals: 11.12.0
transitivePeerDependencies:
- supports-color
dev: true
/@babel/types@7.22.17:
resolution: {integrity: sha512-YSQPHLFtQNE5xN9tHuZnzu8vPr61wVTBZdfv1meex1NBosa4iT05k/Jw06ddJugi4bk7The/oSwQGFcksmEJQg==}
/@babel/types@7.23.0:
resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/helper-string-parser': 7.22.5
'@babel/helper-validator-identifier': 7.22.15
'@babel/helper-validator-identifier': 7.22.20
to-fast-properties: 2.0.0
dev: true
@ -1522,6 +1525,26 @@ packages:
'@volar/language-core': 1.10.1
dev: true
/@vue-macros/common@1.8.0(vue@3.3.4):
resolution: {integrity: sha512-auDJJzE0z3uRe3867e0DsqcseKImktNf5ojCZgUKqiVxb2yTlwlgOVAYCgoep9oITqxkXQymSvFeKhedi8PhaA==}
engines: {node: '>=16.14.0'}
peerDependencies:
vue: ^2.7.0 || ^3.2.25
peerDependenciesMeta:
vue:
optional: true
dependencies:
'@babel/types': 7.23.0
'@rollup/pluginutils': 5.0.4
'@vue/compiler-sfc': 3.3.4
ast-kit: 0.11.2
local-pkg: 0.4.3
magic-string-ast: 0.3.0
vue: 3.3.4
transitivePeerDependencies:
- rollup
dev: true
/@vue/babel-helper-vue-transform-on@1.1.5:
resolution: {integrity: sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w==}
dev: true
@ -1536,7 +1559,7 @@ packages:
'@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.17)
'@babel/template': 7.22.15
'@babel/traverse': 7.22.17
'@babel/types': 7.22.17
'@babel/types': 7.23.0
'@vue/babel-helper-vue-transform-on': 1.1.5
camelcase: 6.3.0
html-tags: 3.3.1
@ -1869,6 +1892,28 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
/ast-kit@0.11.2:
resolution: {integrity: sha512-Q0DjXK4ApbVoIf9GLyCo252tUH44iTnD/hiJ2TQaJeydYWSpKk0sI34+WMel8S9Wt5pbLgG02oJ+gkgX5DV3sQ==}
engines: {node: '>=16.14.0'}
dependencies:
'@babel/parser': 7.22.16
'@rollup/pluginutils': 5.0.4
pathe: 1.1.1
transitivePeerDependencies:
- rollup
dev: true
/ast-kit@0.9.5:
resolution: {integrity: sha512-kbL7ERlqjXubdDd+szuwdlQ1xUxEz9mCz1+m07ftNVStgwRb2RWw+U6oKo08PAvOishMxiqz1mlJyLl8yQx2Qg==}
engines: {node: '>=16.14.0'}
dependencies:
'@babel/parser': 7.22.16
'@rollup/pluginutils': 5.0.4
pathe: 1.1.1
transitivePeerDependencies:
- rollup
dev: true
/ast-types@0.13.4:
resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==}
engines: {node: '>=4'}
@ -1876,6 +1921,16 @@ packages:
tslib: 2.6.2
dev: true
/ast-walker-scope@0.5.0:
resolution: {integrity: sha512-NsyHMxBh4dmdEHjBo1/TBZvCKxffmZxRYhmclfu0PP6Aftre47jOHYaYaNqJcV0bxihxFXhDkzLHUwHc0ocd0Q==}
engines: {node: '>=16.14.0'}
dependencies:
'@babel/parser': 7.22.16
ast-kit: 0.9.5
transitivePeerDependencies:
- rollup
dev: true
/async-retry@1.3.3:
resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==}
dependencies:
@ -4655,6 +4710,13 @@ packages:
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dev: true
/magic-string-ast@0.3.0:
resolution: {integrity: sha512-0shqecEPgdFpnI3AP90epXyxZy9g6CRZ+SZ7BcqFwYmtFEnZ1jpevcV5HoyVnlDS9gCnc1UIg3Rsvp3Ci7r8OA==}
engines: {node: '>=16.14.0'}
dependencies:
magic-string: 0.30.3
dev: true
/magic-string@0.25.9:
resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
dependencies:
@ -6759,7 +6821,7 @@ packages:
acorn: 8.10.0
estree-walker: 3.0.3
magic-string: 0.30.3
unplugin: 1.4.0
unplugin: 1.5.0
dev: true
/unimport@2.2.4:
@ -6775,7 +6837,7 @@ packages:
pkg-types: 1.0.3
scule: 1.0.0
strip-literal: 1.3.0
unplugin: 1.4.0
unplugin: 1.5.0
transitivePeerDependencies:
- rollup
dev: true
@ -6793,7 +6855,7 @@ packages:
pkg-types: 1.0.3
scule: 1.0.0
strip-literal: 1.3.0
unplugin: 1.4.0
unplugin: 1.5.0
transitivePeerDependencies:
- rollup
dev: true
@ -6903,6 +6965,33 @@ packages:
- supports-color
dev: true
/unplugin-vue-router@0.7.0(vue-router@4.2.4)(vue@3.3.4):
resolution: {integrity: sha512-ddRreGq0t5vlSB7OMy4e4cfU1w2AwBQCwmvW3oP/0IHQiokzbx4hd3TpwBu3eIAFVuhX2cwNQwp1U32UybTVCw==}
peerDependencies:
vue-router: ^4.1.0
peerDependenciesMeta:
vue-router:
optional: true
dependencies:
'@babel/types': 7.23.0
'@rollup/pluginutils': 5.0.4
'@vue-macros/common': 1.8.0(vue@3.3.4)
ast-walker-scope: 0.5.0
chokidar: 3.5.3
fast-glob: 3.3.1
json5: 2.2.3
local-pkg: 0.4.3
mlly: 1.4.2
pathe: 1.1.1
scule: 1.0.0
unplugin: 1.5.0
vue-router: 4.2.4(vue@3.3.4)
yaml: 2.3.2
transitivePeerDependencies:
- rollup
- vue
dev: true
/unplugin@1.4.0:
resolution: {integrity: sha512-5x4eIEL6WgbzqGtF9UV8VEC/ehKptPXDS6L2b0mv4FRMkJxRtjaJfOWDd6a8+kYbqsjklix7yWP0N3SUepjXcg==}
dependencies:
@ -6912,6 +7001,15 @@ packages:
webpack-virtual-modules: 0.5.0
dev: true
/unplugin@1.5.0:
resolution: {integrity: sha512-9ZdRwbh/4gcm1JTOkp9lAkIDrtOyOxgHmY7cjuwI8L/2RTikMcVG25GsZwNAgRuap3iDw2jeq7eoqtAsz5rW3A==}
dependencies:
acorn: 8.10.0
chokidar: 3.5.3
webpack-sources: 3.2.3
webpack-virtual-modules: 0.5.0
dev: true
/untildify@4.0.0:
resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==}
engines: {node: '>=8'}
@ -6923,7 +7021,7 @@ packages:
dependencies:
'@babel/core': 7.22.17
'@babel/standalone': 7.22.17
'@babel/types': 7.22.17
'@babel/types': 7.23.0
defu: 6.1.2
jiti: 1.20.0
mri: 1.2.0

View File

@ -2,15 +2,6 @@
<BreadPage>
<div class="min-h-full grid grid-cols-[auto_auto_1fr]">
<div class="w-[200px]">
<!-- <div class="h-6 flex items-end justify-between gap-2">
<div class="text-base">
素材分组
</div>
<div>
<a-link>添加</a-link>
</div>
</div> -->
<!-- <a-divider :margin="12"></a-divider> -->
<div class="flex gap-2">
<a-input-search allow-clear placeholder="分组名称..." class="mb-2"></a-input-search>
<a-button>
@ -58,7 +49,7 @@
import { api } from "@/api";
import { Table, useTable } from "@/components";
import { dayjs } from "@/libs/dayjs";
import numeral from 'numeral';
import numeral from "numeral";
const getIcon = (mimetype: string) => {
if (mimetype.startsWith("image")) {
@ -97,7 +88,7 @@ const table = useTable({
title: "大小",
dataIndex: "description",
width: 120,
render: ({ record }) => numeral(record.size).format('0 b')
render: ({ record }) => numeral(record.size).format("0 b"),
},
{
title: "上传时间",
@ -112,7 +103,7 @@ const table = useTable({
buttons: [
{
type: "modify",
text: '修改'
text: "修改",
},
{
type: "delete",
@ -136,8 +127,8 @@ const table = useTable({
hideLabel: true,
},
nodeProps: {
placeholder: '素材名称...'
} as any
placeholder: "素材名称...",
},
},
],
},

159
src/types/auto-router.d.ts vendored Normal file
View File

@ -0,0 +1,159 @@
/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
// Generated by unplugin-vue-router. ‼️ DO NOT MODIFY THIS FILE ‼️
// It's recommended to commit this file.
// Make sure to add this file to your tsconfig.json file as an "includes" or "files" entry.
/// <reference types="unplugin-vue-router/client" />
import type {
// type safe route locations
RouteLocationTypedList,
RouteLocationResolvedTypedList,
RouteLocationNormalizedTypedList,
RouteLocationNormalizedLoadedTypedList,
RouteLocationAsString,
RouteLocationAsRelativeTypedList,
RouteLocationAsPathTypedList,
// helper types
// route definitions
RouteRecordInfo,
ParamValue,
ParamValueOneOrMore,
ParamValueZeroOrMore,
ParamValueZeroOrOne,
// vue-router extensions
_RouterTyped,
RouterLinkTyped,
RouterLinkPropsTyped,
NavigationGuard,
UseLinkFnTyped,
// data fetching
_DataLoader,
_DefineLoaderOptions,
} from 'unplugin-vue-router/types'
declare module 'vue-router/auto/routes' {
export interface RouteNamedMap {
'/_layout/': RouteRecordInfo<'/_layout/', '/_layout', Record<never, never>, Record<never, never>>,
'/_login/': RouteRecordInfo<'/_login/', '/_login', Record<never, never>, Record<never, never>>,
'/[..._all]/': RouteRecordInfo<'/[..._all]/', '/:_all(.*)', { _all: ParamValue<true> }, { _all: ParamValue<false> }>,
'/demo/': RouteRecordInfo<'/demo/', '/demo', Record<never, never>, Record<never, never>>,
'/demo/test': RouteRecordInfo<'/demo/test', '/demo/test', Record<never, never>, Record<never, never>>,
'/home/': RouteRecordInfo<'/home/', '/home', Record<never, never>, Record<never, never>>,
'/my/': RouteRecordInfo<'/my/', '/my', Record<never, never>, Record<never, never>>,
'/post/': RouteRecordInfo<'/post/', '/post', Record<never, never>, Record<never, never>>,
'/post/category/': RouteRecordInfo<'/post/category/', '/post/category', Record<never, never>, Record<never, never>>,
'/post/comment/': RouteRecordInfo<'/post/comment/', '/post/comment', Record<never, never>, Record<never, never>>,
'/post/media/': RouteRecordInfo<'/post/media/', '/post/media', Record<never, never>, Record<never, never>>,
'/post/post/': RouteRecordInfo<'/post/post/', '/post/post', Record<never, never>, Record<never, never>>,
'/system/': RouteRecordInfo<'/system/', '/system', Record<never, never>, Record<never, never>>,
'/system/login-log/': RouteRecordInfo<'/system/login-log/', '/system/login-log', Record<never, never>, Record<never, never>>,
'/system/menu/': RouteRecordInfo<'/system/menu/', '/system/menu', Record<never, never>, Record<never, never>>,
'/system/operation-log/': RouteRecordInfo<'/system/operation-log/', '/system/operation-log', Record<never, never>, Record<never, never>>,
'/system/permission/': RouteRecordInfo<'/system/permission/', '/system/permission', Record<never, never>, Record<never, never>>,
'/system/role/': RouteRecordInfo<'/system/role/', '/system/role', Record<never, never>, Record<never, never>>,
'/system/user/': RouteRecordInfo<'/system/user/', '/system/user', Record<never, never>, Record<never, never>>,
}
}
declare module 'vue-router/auto' {
import type { RouteNamedMap } from 'vue-router/auto/routes'
export type RouterTyped = _RouterTyped<RouteNamedMap>
/**
* Type safe version of `RouteLocationNormalized` (the type of `to` and `from` in navigation guards).
* Allows passing the name of the route to be passed as a generic.
*/
export type RouteLocationNormalized<Name extends keyof RouteNamedMap = keyof RouteNamedMap> = RouteLocationNormalizedTypedList<RouteNamedMap>[Name]
/**
* Type safe version of `RouteLocationNormalizedLoaded` (the return type of `useRoute()`).
* Allows passing the name of the route to be passed as a generic.
*/
export type RouteLocationNormalizedLoaded<Name extends keyof RouteNamedMap = keyof RouteNamedMap> = RouteLocationNormalizedLoadedTypedList<RouteNamedMap>[Name]
/**
* Type safe version of `RouteLocationResolved` (the returned route of `router.resolve()`).
* Allows passing the name of the route to be passed as a generic.
*/
export type RouteLocationResolved<Name extends keyof RouteNamedMap = keyof RouteNamedMap> = RouteLocationResolvedTypedList<RouteNamedMap>[Name]
/**
* Type safe version of `RouteLocation` . Allows passing the name of the route to be passed as a generic.
*/
export type RouteLocation<Name extends keyof RouteNamedMap = keyof RouteNamedMap> = RouteLocationTypedList<RouteNamedMap>[Name]
/**
* Type safe version of `RouteLocationRaw` . Allows passing the name of the route to be passed as a generic.
*/
export type RouteLocationRaw<Name extends keyof RouteNamedMap = keyof RouteNamedMap> =
| RouteLocationAsString<RouteNamedMap>
| RouteLocationAsRelativeTypedList<RouteNamedMap>[Name]
| RouteLocationAsPathTypedList<RouteNamedMap>[Name]
/**
* Generate a type safe params for a route location. Requires the name of the route to be passed as a generic.
*/
export type RouteParams<Name extends keyof RouteNamedMap> = RouteNamedMap[Name]['params']
/**
* Generate a type safe raw params for a route location. Requires the name of the route to be passed as a generic.
*/
export type RouteParamsRaw<Name extends keyof RouteNamedMap> = RouteNamedMap[Name]['paramsRaw']
export function useRouter(): RouterTyped
export function useRoute<Name extends keyof RouteNamedMap = keyof RouteNamedMap>(name?: Name): RouteLocationNormalizedLoadedTypedList<RouteNamedMap>[Name]
export const useLink: UseLinkFnTyped<RouteNamedMap>
export function onBeforeRouteLeave(guard: NavigationGuard<RouteNamedMap>): void
export function onBeforeRouteUpdate(guard: NavigationGuard<RouteNamedMap>): void
export const RouterLink: RouterLinkTyped<RouteNamedMap>
export const RouterLinkProps: RouterLinkPropsTyped<RouteNamedMap>
// Experimental Data Fetching
export function defineLoader<
P extends Promise<any>,
Name extends keyof RouteNamedMap = keyof RouteNamedMap,
isLazy extends boolean = false,
>(
name: Name,
loader: (route: RouteLocationNormalizedLoaded<Name>) => P,
options?: _DefineLoaderOptions<isLazy>,
): _DataLoader<Awaited<P>, isLazy>
export function defineLoader<
P extends Promise<any>,
isLazy extends boolean = false,
>(
loader: (route: RouteLocationNormalizedLoaded) => P,
options?: _DefineLoaderOptions<isLazy>,
): _DataLoader<Awaited<P>, isLazy>
export {
_definePage as definePage,
_HasDataLoaderMeta as HasDataLoaderMeta,
_setupDataFetchingGuard as setupDataFetchingGuard,
_stopDataFetchingScope as stopDataFetchingScope,
} from 'unplugin-vue-router/runtime'
}
declare module 'vue-router' {
import type { RouteNamedMap } from 'vue-router/auto/routes'
export interface TypesConfig {
beforeRouteUpdate: NavigationGuard<RouteNamedMap>
beforeRouteLeave: NavigationGuard<RouteNamedMap>
$route: RouteLocationNormalizedLoadedTypedList<RouteNamedMap>[keyof RouteNamedMap]
$router: _RouterTyped<RouteNamedMap>
RouterLink: RouterLinkTyped<RouteNamedMap>
}
}

View File

@ -6,6 +6,7 @@ import Unocss from "unocss/vite";
import AutoImport from "unplugin-auto-import/vite";
import { ArcoResolver } from "unplugin-vue-components/resolvers";
import AutoComponent from "unplugin-vue-components/vite";
import AutoRouter from "unplugin-vue-router/vite";
import { defineConfig, loadEnv } from "vite";
import Page from "vite-plugin-pages";
import { arcoToUnoColor } from "./scripts/vite/color";
@ -20,41 +21,26 @@ export default defineConfig(({ mode }) => {
const env = loadEnv(mode, process.cwd());
const host = env.VITE_HOST ?? "0.0.0.0";
const port = Number(env.VITE_PORT ?? 3020);
return {
base: "./",
resolve: {
alias: [
{
find: "@",
replacement: "/src",
},
],
},
server: {
host,
port,
},
css: {
preprocessorOptions: {
less: {
javascriptEnabled: true,
modifyVars: {
hack: `true; @import (reference) "${resolve("src/styles/css-arco.less")}";`,
arcoblue: "#66f",
},
},
},
},
plugins: [
/**
* (vue)
* @see https://github.com/posva/unplugin-vue-router
*/
AutoRouter({
exclude: ["**/components/*.vue", "**/*.*.vue"],
dts: "src/types/auto-router.d.ts",
}),
/**
* Vue 3
* @see https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue
*/
Vue({
script: {
defineModel: true
}
defineModel: true,
},
}),
/**
@ -106,10 +92,10 @@ export default defineConfig(({ mode }) => {
presetIcons({
prefix: "",
collections: {
'icon-file': (() => {
"icon-file": (() => {
const icons = {};
for (const item of fileIcon) {
icons[item.font_class] = item.show_svg
icons[item.font_class] = item.show_svg;
}
return icons;
})(),
@ -124,5 +110,28 @@ export default defineConfig(({ mode }) => {
*/
plugin(),
],
resolve: {
alias: [
{
find: "@",
replacement: "/src",
},
],
},
server: {
host,
port,
},
css: {
preprocessorOptions: {
less: {
javascriptEnabled: true,
modifyVars: {
hack: `true; @import (reference) "${resolve("src/styles/css-arco.less")}";`,
arcoblue: "#66f",
},
},
},
},
};
});