Compare commits
84
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8a01bc9283 | ||
|
|
f648eecd1d | ||
|
|
abf64f7dd4 | ||
|
|
c6e86f9b70 | ||
|
|
e35b3691ee | ||
|
|
309e68842b | ||
|
|
ae4e3c3885 | ||
|
|
136a8b5210 | ||
|
|
63fde48052 | ||
|
|
73f71ecb7d | ||
|
|
1a8103174b | ||
|
|
1be2283ade | ||
|
|
fa9243efcd | ||
|
|
47618e72df | ||
|
|
6021ee88c0 | ||
|
|
b15eaad009 | ||
|
|
fc5937b265 | ||
|
|
fd4e995e9d | ||
|
|
ed78eddd12 | ||
|
|
27fd4cfff1 | ||
|
|
af98e65f04 | ||
|
|
cf60aef54d | ||
|
|
6e97ede814 | ||
|
|
0ab412e22d | ||
|
|
08d4c70ac2 | ||
|
|
de4341d582 | ||
|
|
5ec4b19309 | ||
|
|
33ce1533d6 | ||
|
|
8548475ec5 | ||
|
|
3ff98f992f | ||
|
|
814a0e826d | ||
|
|
acd960e6bc | ||
|
|
d32c3089d6 | ||
|
|
550b24d2fd | ||
|
|
289496e78d | ||
|
|
c5d5425e92 | ||
|
|
4a2107ea98 | ||
|
|
992d731e40 | ||
|
|
924e913ce9 | ||
|
|
2cbd287bfb | ||
|
|
4b67fa5e78 | ||
|
|
0ff5a792fe | ||
|
|
3f48f5d3f4 | ||
|
|
4b5f999a23 | ||
|
|
8a12214e4d | ||
|
|
e3cbeb3301 | ||
|
|
009a05dea9 | ||
|
|
ccad06d9dd | ||
|
|
2fafa6f250 | ||
|
|
8ee0a4d7d6 | ||
|
|
92e638bd16 | ||
|
|
22aab15a56 | ||
|
|
93ef7cbdee | ||
|
|
0f52e8b22c | ||
|
|
e834b528e0 | ||
|
|
1a42d7973b | ||
|
|
e775922ace | ||
|
|
c36e00a224 | ||
|
|
e6d7a25d9f | ||
|
|
4ae1b6cf6f | ||
|
|
c31459ca2b | ||
|
|
d97eead878 | ||
|
|
d148cab55a | ||
|
|
c9b4f3fb0d | ||
|
|
5a7ea42ebf | ||
|
|
b49f942b3a | ||
|
|
86a2b37005 | ||
|
|
0aa905f772 | ||
|
|
4f9a72bf09 | ||
|
|
0ca3ab5cfd | ||
|
|
e1ec57be81 | ||
|
|
131a45e6ed | ||
|
|
f90b509344 | ||
|
|
c9d13ea857 | ||
|
|
79e7f8d221 | ||
|
|
bf647d8db9 | ||
|
|
2367db4ae9 | ||
|
|
58e0687eb0 | ||
|
|
12c56497b5 | ||
|
|
d62b83b0b7 | ||
|
|
cc7f7fe146 | ||
|
|
99c52ed4e5 | ||
|
|
a10bb5bd9c | ||
|
|
0bd792022a |
No files matched your search
+2
-1
@@ -1 +1,2 @@
|
|||||||
github: antfu
|
open_collective: antfu
|
||||||
|
github: [antfu]
|
||||||
+20
-20
@@ -13,11 +13,11 @@ jobs:
|
|||||||
lint:
|
lint:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v3
|
||||||
- uses: actions/setup-node@v3
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 16.x
|
node-version: lts/*
|
||||||
cache: pnpm
|
cache: pnpm
|
||||||
|
|
||||||
- name: Install
|
- name: Install
|
||||||
@@ -29,11 +29,11 @@ jobs:
|
|||||||
typecheck:
|
typecheck:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v3
|
||||||
- uses: actions/setup-node@v3
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 16.x
|
node-version: lts/*
|
||||||
cache: pnpm
|
cache: pnpm
|
||||||
|
|
||||||
- name: Install
|
- name: Install
|
||||||
@@ -47,15 +47,15 @@ jobs:
|
|||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
node-version: [14.x, 16.x]
|
node-version: [20.x, 22.x]
|
||||||
os: [ubuntu-latest]
|
os: [ubuntu-latest]
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v3
|
||||||
- name: Use Node.js ${{ matrix.node-version }}
|
- name: Use Node.js ${{ matrix.node-version }}
|
||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: ${{ matrix.node-version }}
|
node-version: ${{ matrix.node-version }}
|
||||||
registry-url: https://registry.npmjs.org/
|
registry-url: https://registry.npmjs.org/
|
||||||
@@ -67,19 +67,19 @@ jobs:
|
|||||||
test-e2e:
|
test-e2e:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/cache@v3
|
- uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
~/.cache
|
~/.cache
|
||||||
key: cypress-cache-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}
|
key: cypress-cache-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}
|
||||||
|
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v3
|
||||||
|
|
||||||
- name: Use Node.js ${{ matrix.node-version }}
|
- name: Use Node.js
|
||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: ${{ matrix.node-version }}
|
node-version: lts/*
|
||||||
registry-url: https://registry.npmjs.org/
|
registry-url: https://registry.npmjs.org/
|
||||||
cache: pnpm
|
cache: pnpm
|
||||||
|
|
||||||
@@ -89,8 +89,8 @@ jobs:
|
|||||||
run: cp pnpm-lock.yaml package-lock.json
|
run: cp pnpm-lock.yaml package-lock.json
|
||||||
|
|
||||||
- name: Cypress
|
- name: Cypress
|
||||||
uses: cypress-io/github-action@v4
|
uses: cypress-io/github-action@v6
|
||||||
with:
|
with:
|
||||||
install-command: echo
|
install-command: echo
|
||||||
build: pnpm run build
|
build: pnpm run build
|
||||||
start: npx vite --port 3333
|
start: npx vite preview --port 3333
|
||||||
@@ -8,3 +8,4 @@ node_modules
|
|||||||
.idea/
|
.idea/
|
||||||
*.log
|
*.log
|
||||||
cypress/downloads
|
cypress/downloads
|
||||||
|
public/assets/fonts
|
||||||
@@ -1,2 +1 @@
|
|||||||
shamefully-hoist=true
|
shamefully-hoist=true
|
||||||
strict-peer-dependencies=false
|
|
||||||
Vendored
+39
-7
@@ -4,13 +4,45 @@
|
|||||||
"i18n-ally.keystyle": "nested",
|
"i18n-ally.keystyle": "nested",
|
||||||
"i18n-ally.localesPaths": "locales",
|
"i18n-ally.localesPaths": "locales",
|
||||||
"i18n-ally.sortKeys": true,
|
"i18n-ally.sortKeys": true,
|
||||||
|
|
||||||
|
// Disable the default formatter
|
||||||
"prettier.enable": false,
|
"prettier.enable": false,
|
||||||
"editor.codeActionsOnSave": {
|
|
||||||
"source.fixAll.eslint": true
|
|
||||||
},
|
|
||||||
"files.associations": {
|
|
||||||
"*.css": "postcss"
|
|
||||||
},
|
|
||||||
"editor.formatOnSave": false,
|
"editor.formatOnSave": false,
|
||||||
"typescript.tsdk": "node_modules/typescript/lib"
|
|
||||||
|
// Auto fix
|
||||||
|
"editor.codeActionsOnSave": {
|
||||||
|
"source.fixAll.eslint": "explicit",
|
||||||
|
"source.organizeImports": "never"
|
||||||
|
},
|
||||||
|
|
||||||
|
// Silent the stylistic rules in you IDE, but still auto fix them
|
||||||
|
"eslint.rules.customizations": [
|
||||||
|
{ "rule": "style/*", "severity": "off" },
|
||||||
|
{ "rule": "format/*", "severity": "off" },
|
||||||
|
{ "rule": "*-indent", "severity": "off" },
|
||||||
|
{ "rule": "*-spacing", "severity": "off" },
|
||||||
|
{ "rule": "*-spaces", "severity": "off" },
|
||||||
|
{ "rule": "*-order", "severity": "off" },
|
||||||
|
{ "rule": "*-dangle", "severity": "off" },
|
||||||
|
{ "rule": "*-newline", "severity": "off" },
|
||||||
|
{ "rule": "*quotes", "severity": "off" },
|
||||||
|
{ "rule": "*semi", "severity": "off" }
|
||||||
|
],
|
||||||
|
|
||||||
|
// The following is optional.
|
||||||
|
// It's better to put under project setting `.vscode/settings.json`
|
||||||
|
// to avoid conflicts with working with different eslint configs
|
||||||
|
// that does not support all formats.
|
||||||
|
"eslint.validate": [
|
||||||
|
"javascript",
|
||||||
|
"javascriptreact",
|
||||||
|
"typescript",
|
||||||
|
"typescriptreact",
|
||||||
|
"vue",
|
||||||
|
"html",
|
||||||
|
"markdown",
|
||||||
|
"json",
|
||||||
|
"jsonc",
|
||||||
|
"yaml"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
+3
-3
@@ -1,16 +1,16 @@
|
|||||||
FROM node:16-alpine as build-stage
|
FROM node:20-alpine AS build-stage
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
RUN corepack enable
|
RUN corepack enable
|
||||||
|
|
||||||
COPY .npmrc package.json pnpm-lock.yaml ./
|
COPY .npmrc package.json pnpm-lock.yaml pnpm-workspace.yaml ./
|
||||||
RUN --mount=type=cache,id=pnpm-store,target=/root/.pnpm-store \
|
RUN --mount=type=cache,id=pnpm-store,target=/root/.pnpm-store \
|
||||||
pnpm install --frozen-lockfile
|
pnpm install --frozen-lockfile
|
||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
RUN pnpm build
|
RUN pnpm build
|
||||||
|
|
||||||
FROM nginx:stable-alpine as production-stage
|
FROM nginx:stable-alpine AS production-stage
|
||||||
|
|
||||||
COPY --from=build-stage /app/dist /usr/share/nginx/html
|
COPY --from=build-stage /app/dist /usr/share/nginx/html
|
||||||
EXPOSE 80
|
EXPOSE 80
|
||||||
|
|||||||
@@ -14,13 +14,16 @@ Mocking up web app with <b>Vitesse</b><sup><em>(speed)</em></sup><br>
|
|||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<p align='center'>
|
> **Note**: This template is created during the early transition of Vue 3 and Vite. At this moment, if you are seeking for better Vue developer experience and more consistent maintenance, we recommend using [Nuxt](https://nuxt.com) instead (it also works perfectly with SPA or SSG as needed). This template still serves as a reference, but expect slower updates.
|
||||||
<b>English</b> | <a href="https://github.com/antfu/vitesse/blob/main/README.zh-CN.md">简体中文</a>
|
|
||||||
<!-- Contributors: Thanks for getting interested, however we DON'T accept new transitions to the README, thanks. -->
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
|
<p align='center'>
|
||||||
|
<b>English</b> | <a href="https://github.com/antfu-collective/vitesse/blob/main/README.zh-CN.md">简体中文</a>
|
||||||
|
<!-- Contributors: Thanks for getting interested, however we DON'T accept new translations to the README, thanks. -->
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
@@ -44,19 +47,15 @@ Mocking up web app with <b>Vitesse</b><sup><em>(speed)</em></sup><br>
|
|||||||
|
|
||||||
- 🔎 [Component Preview](https://github.com/johnsoncodehk/vite-plugin-vue-component-preview)
|
- 🔎 [Component Preview](https://github.com/johnsoncodehk/vite-plugin-vue-component-preview)
|
||||||
|
|
||||||
- 🗒 [Markdown Support](https://github.com/antfu/vite-plugin-vue-markdown)
|
- 🗒 [Markdown Support](https://github.com/unplugin/unplugin-vue-markdown)
|
||||||
|
|
||||||
- 🔥 Use the [new `<script setup>` syntax](https://github.com/vuejs/rfcs/pull/227)
|
- 🔥 Use the [new `<script setup>` syntax](https://github.com/vuejs/rfcs/pull/227)
|
||||||
|
|
||||||
- 🤙🏻 [Reactivity Transform](https://vuejs.org/guide/extras/reactivity-transform.html) enabled
|
|
||||||
|
|
||||||
- 📥 [APIs auto importing](https://github.com/antfu/unplugin-auto-import) - use Composition API and others directly
|
- 📥 [APIs auto importing](https://github.com/antfu/unplugin-auto-import) - use Composition API and others directly
|
||||||
|
|
||||||
- 🖨 Static-site generation (SSG) via [vite-ssg](https://github.com/antfu/vite-ssg)
|
- 🖨 Static-site generation (SSG) via [vite-ssg](https://github.com/antfu/vite-ssg)
|
||||||
|
|
||||||
- 🦔 Critical CSS via [critters](https://github.com/GoogleChromeLabs/critters)
|
- 🦔 Critical CSS via [beasties](https://github.com/danielroe/beasties)
|
||||||
|
|
||||||
- 🔤 [Webfont self-hosting](https://github.com/feat-agency/vite-plugin-webfont-dl)
|
|
||||||
|
|
||||||
- 🦾 TypeScript, of course
|
- 🦾 TypeScript, of course
|
||||||
|
|
||||||
@@ -66,7 +65,6 @@ Mocking up web app with <b>Vitesse</b><sup><em>(speed)</em></sup><br>
|
|||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
|
|
||||||
## Pre-packed
|
## Pre-packed
|
||||||
|
|
||||||
### UI Frameworks
|
### UI Frameworks
|
||||||
@@ -81,23 +79,21 @@ Mocking up web app with <b>Vitesse</b><sup><em>(speed)</em></sup><br>
|
|||||||
### Plugins
|
### Plugins
|
||||||
|
|
||||||
- [Vue Router](https://github.com/vuejs/router)
|
- [Vue Router](https://github.com/vuejs/router)
|
||||||
- [`vite-plugin-pages`](https://github.com/hannoeru/vite-plugin-pages) - file system based routing
|
- [`unplugin-vue-router`](https://github.com/posva/unplugin-vue-router) - file system based routing
|
||||||
- [`vite-plugin-vue-layouts`](https://github.com/JohnCampionJr/vite-plugin-vue-layouts) - layouts for pages
|
- [`vite-plugin-vue-layouts`](https://github.com/JohnCampionJr/vite-plugin-vue-layouts) - layouts for pages
|
||||||
- [Pinia](https://pinia.vuejs.org) - Intuitive, type safe, light and flexible Store for Vue using the composition api
|
- [Pinia](https://pinia.vuejs.org) - Intuitive, type safe, light and flexible Store for Vue using the composition api
|
||||||
- [`unplugin-vue-components`](https://github.com/antfu/unplugin-vue-components) - components auto import
|
- [`unplugin-vue-components`](https://github.com/antfu/unplugin-vue-components) - components auto import
|
||||||
- [`unplugin-auto-import`](https://github.com/antfu/unplugin-auto-import) - Directly use Vue Composition API and others without importing
|
- [`unplugin-auto-import`](https://github.com/antfu/unplugin-auto-import) - Directly use Vue Composition API and others without importing
|
||||||
- [`unplugin-vue-macros`](https://github.com/sxzz/unplugin-vue-macros) - Explore and extend more macros and syntax sugar to Vue.
|
- [`unplugin-vue-macros`](https://github.com/sxzz/unplugin-vue-macros) - Explore and extend more macros and syntax sugar to Vue.
|
||||||
- [`vite-plugin-pwa`](https://github.com/antfu/vite-plugin-pwa) - PWA
|
- [`vite-plugin-pwa`](https://github.com/antfu/vite-plugin-pwa) - PWA
|
||||||
- [`vite-plugin-vue-component-preview`](https://github.com/johnsoncodehk/vite-plugin-vue-component-preview) - Preview single component in VSCode
|
- [`unplugin-vue-markdown`](https://github.com/unplugin/unplugin-vue-markdown) - Markdown as components / components in Markdown
|
||||||
- [`vite-plugin-vue-markdown`](https://github.com/antfu/vite-plugin-vue-markdown) - Markdown as components / components in Markdown
|
- [`@shikijs/markdown-it`](https://github.com/shikijs/shiki) - [Shiki](https://github.com/shikijs/shiki) for syntax highlighting
|
||||||
- [`markdown-it-shiki`](https://github.com/antfu/markdown-it-shiki) - [Shiki](https://github.com/shikijs/shiki) for syntax highlighting
|
|
||||||
- [Vue I18n](https://github.com/intlify/vue-i18n-next) - Internationalization
|
- [Vue I18n](https://github.com/intlify/vue-i18n-next) - Internationalization
|
||||||
- [`unplugin-vue-i18n`](https://github.com/intlify/bundle-tools/tree/main/packages/unplugin-vue-i18n) - unplugin for Vue I18n
|
- [`unplugin-vue-i18n`](https://github.com/intlify/bundle-tools/tree/main/packages/unplugin-vue-i18n) - unplugin for Vue I18n
|
||||||
- [VueUse](https://github.com/antfu/vueuse) - collection of useful composition APIs
|
- [VueUse](https://github.com/antfu/vueuse) - collection of useful composition APIs
|
||||||
- [`vite-ssg-sitemap`](https://github.com/jbaubree/vite-ssg-sitemap) - Sitemap generator
|
- [`vite-ssg-sitemap`](https://github.com/jbaubree/vite-ssg-sitemap) - Sitemap generator
|
||||||
- [`@vueuse/head`](https://github.com/vueuse/head) - manipulate document head reactively
|
- [`@unhead/vue v2`](https://github.com/unjs/unhead) - manipulate document head reactively
|
||||||
- [`vite-plugin-vue-inspector`](https://github.com/webfansplz/vite-plugin-vue-inspector) - jump to local IDE source code while click the element of browser automatically
|
- [`vite-plugin-vue-devtools`](https://github.com/vuejs/devtools-next) - Designed to enhance the Vue developer experience.
|
||||||
- [`vite-plugin-webfont-dl`](https://github.com/feat-agency/vite-plugin-webfont-dl) - Zero-config webfont (Google Fonts) downloader and injector to improve website's performance.
|
|
||||||
|
|
||||||
### Coding Style
|
### Coding Style
|
||||||
|
|
||||||
@@ -111,7 +107,7 @@ Mocking up web app with <b>Vitesse</b><sup><em>(speed)</em></sup><br>
|
|||||||
- [Cypress](https://cypress.io/) - E2E testing
|
- [Cypress](https://cypress.io/) - E2E testing
|
||||||
- [pnpm](https://pnpm.js.org/) - fast, disk space efficient package manager
|
- [pnpm](https://pnpm.js.org/) - fast, disk space efficient package manager
|
||||||
- [`vite-ssg`](https://github.com/antfu/vite-ssg) - Static-site generation
|
- [`vite-ssg`](https://github.com/antfu/vite-ssg) - Static-site generation
|
||||||
- [critters](https://github.com/GoogleChromeLabs/critters) - Critical CSS
|
- [beasties](https://github.com/danielroe/beasties) - Critical CSS
|
||||||
- [Netlify](https://www.netlify.com/) - zero-config deployment
|
- [Netlify](https://www.netlify.com/) - zero-config deployment
|
||||||
- [VS Code Extensions](./.vscode/extensions.json)
|
- [VS Code Extensions](./.vscode/extensions.json)
|
||||||
- [Vite](https://marketplace.visualstudio.com/items?itemName=antfu.vite) - Fire up Vite server automatically
|
- [Vite](https://marketplace.visualstudio.com/items?itemName=antfu.vite) - Fire up Vite server automatically
|
||||||
@@ -141,7 +137,8 @@ As this template is strongly opinionated, the following provides a curated list
|
|||||||
- [vitecamp](https://github.com/nekobc1998923/vitecamp) by [@nekobc1998923](https://github.com/nekobc1998923) - Like Vitesse but without SSG/SSR/File based routing, includes Element Plus
|
- [vitecamp](https://github.com/nekobc1998923/vitecamp) by [@nekobc1998923](https://github.com/nekobc1998923) - Like Vitesse but without SSG/SSR/File based routing, includes Element Plus
|
||||||
- [vitesse-h5](https://github.com/YunYouJun/vitesse-h5) by [@YunYouJun](https://github.com/YunYouJun) - Vitesse for Mobile
|
- [vitesse-h5](https://github.com/YunYouJun/vitesse-h5) by [@YunYouJun](https://github.com/YunYouJun) - Vitesse for Mobile
|
||||||
- [bat](https://github.com/olgam4/bat) by [@olgam4](https://github.com/olgam4) - Vitesse for SolidJS
|
- [bat](https://github.com/olgam4/bat) by [@olgam4](https://github.com/olgam4) - Vitesse for SolidJS
|
||||||
- [vitesse-solid](https://github.com/xbmlz/vitesse-solid) by [@xbmlz](https://github.com/xbmlz) - Vitesse for SolidJS, build with [`SolidStart`](https://start.solidjs.com/), includes [UnoCSS](https://github.com/unocss/unocss) and [HopeUI](https://hope-ui.com/).
|
- [vitesse-solid](https://github.com/xbmlz/vitesse-solid) by [@xbmlz](https://github.com/xbmlz) - Vitesse for SolidJS, build with [`SolidStart`](https://start.solidjs.com/), includes [UnoCSS](https://github.com/unocss/unocss).
|
||||||
|
- [vue3-vant-mobile](https://github.com/easy-temps/vue3-vant-mobile) by [CharleeWa](https://github.com/CharleeWa) - Like Vitesse but without SSG/SSR, includes Vant
|
||||||
|
|
||||||
## Try it now!
|
## Try it now!
|
||||||
|
|
||||||
@@ -149,14 +146,14 @@ As this template is strongly opinionated, the following provides a curated list
|
|||||||
|
|
||||||
### GitHub Template
|
### GitHub Template
|
||||||
|
|
||||||
[Create a repo from this template on GitHub](https://github.com/antfu/vitesse/generate).
|
[Create a repo from this template on GitHub](https://github.com/antfu-collective/vitesse/generate).
|
||||||
|
|
||||||
### Clone to local
|
### Clone to local
|
||||||
|
|
||||||
If you prefer to do it manually with the cleaner git history
|
If you prefer to do it manually with the cleaner git history
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npx degit antfu/vitesse my-vitesse-app
|
npx degit antfu-collective/vitesse my-vitesse-app
|
||||||
cd my-vitesse-app
|
cd my-vitesse-app
|
||||||
pnpm i # If you don't have pnpm installed, run: npm install -g pnpm
|
pnpm i # If you don't have pnpm installed, run: npm install -g pnpm
|
||||||
```
|
```
|
||||||
|
|||||||
+15
-12
@@ -15,8 +15,12 @@
|
|||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
|
> **Note**: 本模板创建于 Vue 3 和 Vite 的早期过渡时期。目前,如果您正在寻求更好的 Vue 开发体验和更持续的维护,我们建议您使用 [Nuxt 3](https://nuxt.com) 来代替(它也可以根据需要使用 SPA 或 SSG)。本模板仍会作为参考缓慢地维护下去,但将不会有太多的更新。
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
<p align='center'>
|
<p align='center'>
|
||||||
<a href="https://github.com/antfu/vitesse/blob/main/README.md">English</a> | <b>简体中文</b>
|
<a href="https://github.com/antfu-collective/vitesse/blob/main/README.md">English</a> | <b>简体中文</b>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
@@ -41,17 +45,15 @@
|
|||||||
|
|
||||||
- 🌍 [I18n 国际化开箱即用](./locales)
|
- 🌍 [I18n 国际化开箱即用](./locales)
|
||||||
|
|
||||||
- 🗒 [Markdown 支持](https://github.com/antfu/vite-plugin-vue-markdown)
|
- 🗒 [Markdown 支持](https://github.com/unplugin/unplugin-vue-markdown)
|
||||||
|
|
||||||
- 🔥 使用 [新的 `<script setup>` 语法](https://github.com/vuejs/rfcs/pull/227)
|
- 🔥 使用 [新的 `<script setup>` 语法](https://github.com/vuejs/rfcs/pull/227)
|
||||||
|
|
||||||
- 🤙🏻 默认开启 [响应性语法糖](https://vuejs.org/guide/extras/reactivity-transform.html)
|
- 📥 [API 自动加载](https://github.com/unplugin/unplugin-auto-import) - 直接使用 Composition API 无需引入
|
||||||
|
|
||||||
- 📥 [API 自动加载](https://github.com/antfu/unplugin-auto-import) - 直接使用 Composition API 无需引入
|
|
||||||
|
|
||||||
- 🖨 使用 [vite-ssg](https://github.com/antfu/vite-ssg) 进行服务端生成 (SSG)
|
- 🖨 使用 [vite-ssg](https://github.com/antfu/vite-ssg) 进行服务端生成 (SSG)
|
||||||
|
|
||||||
- 🦔 使用 [critters](https://github.com/GoogleChromeLabs/critters) 的生成关键 CSS
|
- 🦔 使用 [beasties](https://github.com/danielroe/beasties) 的生成关键 CSS
|
||||||
|
|
||||||
- 🦾 TypeScript, 当然
|
- 🦾 TypeScript, 当然
|
||||||
|
|
||||||
@@ -75,13 +77,13 @@
|
|||||||
### 插件
|
### 插件
|
||||||
|
|
||||||
- [Vue Router](https://github.com/vuejs/router)
|
- [Vue Router](https://github.com/vuejs/router)
|
||||||
- [`vite-plugin-pages`](https://github.com/hannoeru/vite-plugin-pages) - 以文件系统为基础的路由
|
- [`unplugin-vue-router`](https://github.com/posva/unplugin-vue-router) - 以文件系统为基础的路由
|
||||||
- [`vite-plugin-vue-layouts`](https://github.com/JohnCampionJr/vite-plugin-vue-layouts) - 页面布局系统
|
- [`vite-plugin-vue-layouts`](https://github.com/JohnCampionJr/vite-plugin-vue-layouts) - 页面布局系统
|
||||||
- [Pinia](https://pinia.vuejs.org) - 直接的, 类型安全的, 使用 Composition API 的轻便灵活的 Vue 状态管理
|
- [Pinia](https://pinia.vuejs.org) - 直接的, 类型安全的, 使用 Composition API 的轻便灵活的 Vue 状态管理
|
||||||
- [`unplugin-vue-components`](https://github.com/antfu/unplugin-vue-components) - 自动加载组件
|
- [`unplugin-vue-components`](https://github.com/antfu/unplugin-vue-components) - 自动加载组件
|
||||||
- [`unplugin-auto-import`](https://github.com/antfu/unplugin-auto-import) - 直接使用 Composition API 等,无需导入
|
- [`unplugin-auto-import`](https://github.com/antfu/unplugin-auto-import) - 直接使用 Composition API 等,无需导入
|
||||||
- [`vite-plugin-pwa`](https://github.com/antfu/vite-plugin-pwa) - PWA
|
- [`vite-plugin-pwa`](https://github.com/antfu/vite-plugin-pwa) - PWA
|
||||||
- [`vite-plugin-vue-markdown`](https://github.com/antfu/vite-plugin-vue-markdown) - Markdown 作为组件,也可以让组件在 Markdown 中使用
|
- [`unplugin-vue-markdown`](https://github.com/unplugin/unplugin-vue-markdown) - Markdown 作为组件,也可以让组件在 Markdown 中使用
|
||||||
- [`markdown-it-prism`](https://github.com/jGleitz/markdown-it-prism) - [Prism](https://prismjs.com/) 的语法高亮
|
- [`markdown-it-prism`](https://github.com/jGleitz/markdown-it-prism) - [Prism](https://prismjs.com/) 的语法高亮
|
||||||
- [`prism-theme-vars`](https://github.com/antfu/prism-theme-vars) - 利用 CSS 变量自定义 Prism.js 的主题
|
- [`prism-theme-vars`](https://github.com/antfu/prism-theme-vars) - 利用 CSS 变量自定义 Prism.js 的主题
|
||||||
- [Vue I18n](https://github.com/intlify/vue-i18n-next) - 国际化
|
- [Vue I18n](https://github.com/intlify/vue-i18n-next) - 国际化
|
||||||
@@ -89,7 +91,7 @@
|
|||||||
- [VueUse](https://github.com/antfu/vueuse) - 实用的 Composition API 工具合集
|
- [VueUse](https://github.com/antfu/vueuse) - 实用的 Composition API 工具合集
|
||||||
- [`vite-ssg-sitemap`](https://github.com/jbaubree/vite-ssg-sitemap) - 站点地图生成器
|
- [`vite-ssg-sitemap`](https://github.com/jbaubree/vite-ssg-sitemap) - 站点地图生成器
|
||||||
- [`@vueuse/head`](https://github.com/vueuse/head) - 响应式地操作文档头信息
|
- [`@vueuse/head`](https://github.com/vueuse/head) - 响应式地操作文档头信息
|
||||||
- [`vite-plugin-vue-inspector`](https://github.com/webfansplz/vite-plugin-vue-inspector) - 点击页面元素自动跳转到本地IDE对应的 Vue 组件
|
- [`vite-plugin-vue-devtools`](https://github.com/webfansplz/vite-plugin-vue-devtools) - 旨在增强Vue开发者体验的Vite插件
|
||||||
|
|
||||||
### 编码风格
|
### 编码风格
|
||||||
|
|
||||||
@@ -97,12 +99,13 @@
|
|||||||
- [ESLint](https://eslint.org/) 配置为 [@antfu/eslint-config](https://github.com/antfu/eslint-config), 单引号, 无分号.
|
- [ESLint](https://eslint.org/) 配置为 [@antfu/eslint-config](https://github.com/antfu/eslint-config), 单引号, 无分号.
|
||||||
|
|
||||||
### 开发工具
|
### 开发工具
|
||||||
|
|
||||||
- [TypeScript](https://www.typescriptlang.org/)
|
- [TypeScript](https://www.typescriptlang.org/)
|
||||||
- [Vitest](https://github.com/vitest-dev/vitest) - 基于 Vite 的单元测试框架
|
- [Vitest](https://github.com/vitest-dev/vitest) - 基于 Vite 的单元测试框架
|
||||||
- [Cypress](https://cypress.io/) - E2E 测试
|
- [Cypress](https://cypress.io/) - E2E 测试
|
||||||
- [pnpm](https://pnpm.js.org/) - 快, 节省磁盘空间的包管理器
|
- [pnpm](https://pnpm.js.org/) - 快, 节省磁盘空间的包管理器
|
||||||
- [`vite-ssg`](https://github.com/antfu/vite-ssg) - 服务端生成
|
- [`vite-ssg`](https://github.com/antfu/vite-ssg) - 服务端生成
|
||||||
- [critters](https://github.com/GoogleChromeLabs/critters) - 关键 CSS 生成器
|
- [beasties](https://github.com/danielroe/beasties) - 关键 CSS 生成器
|
||||||
- [Netlify](https://www.netlify.com/) - 零配置的部署
|
- [Netlify](https://www.netlify.com/) - 零配置的部署
|
||||||
- [VS Code 扩展](./.vscode/extensions.json)
|
- [VS Code 扩展](./.vscode/extensions.json)
|
||||||
- [Vite](https://marketplace.visualstudio.com/items?itemName=antfu.vite) - 自动启动 Vite 服务器
|
- [Vite](https://marketplace.visualstudio.com/items?itemName=antfu.vite) - 自动启动 Vite 服务器
|
||||||
@@ -132,14 +135,14 @@
|
|||||||
|
|
||||||
### GitHub 模板
|
### GitHub 模板
|
||||||
|
|
||||||
[使用这个模板创建仓库](https://github.com/antfu/vitesse/generate).
|
[使用这个模板创建仓库](https://github.com/antfu-collective/vitesse/generate).
|
||||||
|
|
||||||
### 克隆到本地
|
### 克隆到本地
|
||||||
|
|
||||||
如果您更喜欢使用更干净的 git 历史记录手动执行此操作
|
如果您更喜欢使用更干净的 git 历史记录手动执行此操作
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npx degit antfu/vitesse my-vitesse-app
|
npx degit antfu-collective/vitesse my-vitesse-app
|
||||||
cd my-vitesse-app
|
cd my-vitesse-app
|
||||||
pnpm i # 如果你没装过 pnpm, 可以先运行: npm install -g pnpm
|
pnpm i # 如果你没装过 pnpm, 可以先运行: npm install -g pnpm
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ context('Basic', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
it('markdown', () => {
|
it('markdown', () => {
|
||||||
cy.get('[title="About"]')
|
cy.get('[data-test-id="about"]')
|
||||||
.click()
|
.click()
|
||||||
.url()
|
.url()
|
||||||
.should('eq', 'http://localhost:3333/about')
|
.should('eq', 'http://localhost:3333/about')
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
"cypress"
|
"cypress"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"exclude": [],
|
|
||||||
"include": [
|
"include": [
|
||||||
"**/*.ts"
|
"**/*.ts"
|
||||||
]
|
],
|
||||||
|
"exclude": []
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
// @ts-check
|
||||||
|
import antfu from '@antfu/eslint-config'
|
||||||
|
|
||||||
|
export default antfu(
|
||||||
|
{
|
||||||
|
unocss: true,
|
||||||
|
formatters: true,
|
||||||
|
pnpm: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: ['README.md', 'README.zh-CN.md'],
|
||||||
|
rules: {
|
||||||
|
'markdown/heading-increment': 'off',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
)
|
||||||
+21
-20
@@ -1,22 +1,23 @@
|
|||||||
<!DOCTYPE html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<link rel="apple-touch-icon" href="/pwa-192x192.png">
|
<link rel="apple-touch-icon" href="/pwa-192x192.png" />
|
||||||
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#00aba9">
|
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#00aba9" />
|
||||||
<meta name="msapplication-TileColor" content="#00aba9">
|
<meta name="msapplication-TileColor" content="#00aba9" />
|
||||||
<script>
|
<script>
|
||||||
(function () {
|
;(function () {
|
||||||
const prefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches
|
const prefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches
|
||||||
const setting = localStorage.getItem('vueuse-color-scheme') || 'auto'
|
const setting = localStorage.getItem('vueuse-color-scheme') || 'auto'
|
||||||
if (setting === 'dark' || (prefersDark && setting !== 'light'))
|
if (setting === 'dark' || (prefersDark && setting !== 'light'))
|
||||||
document.documentElement.classList.toggle('dark', true)
|
document.documentElement.classList.toggle('dark', true)
|
||||||
})()
|
})()
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body class="font-sans">
|
<body class="font-sans">
|
||||||
<div id="app"></div>
|
<div id="app"></div>
|
||||||
<script type="module" src="/src/main.ts"></script>
|
<script type="module" src="/src/main.ts"></script>
|
||||||
</body>
|
<noscript> This website requires JavaScript to function properly. Please enable JavaScript to continue. </noscript>
|
||||||
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
button:
|
||||||
|
about: Haqida
|
||||||
|
back: Orqaga
|
||||||
|
go: Kettik
|
||||||
|
home: Bosh sahifa
|
||||||
|
toggle_dark: Qorong‘i rejimga o‘tish
|
||||||
|
toggle_langs: Tilni o‘zgartirish
|
||||||
|
intro:
|
||||||
|
desc: O‘ylangan boshlang‘ich Vite shabloni
|
||||||
|
dynamic-route: Dynamic route demo'si
|
||||||
|
hi: Assalomu alaykum, {name}!
|
||||||
|
aka: shuningdek
|
||||||
|
whats-your-name: Ismingiz nima?
|
||||||
|
not-found: Topilmadi
|
||||||
+12
-11
@@ -1,16 +1,17 @@
|
|||||||
[build.environment]
|
|
||||||
NODE_VERSION = "16"
|
|
||||||
|
|
||||||
[build]
|
[build]
|
||||||
publish = "dist"
|
publish = "dist"
|
||||||
command = "pnpm run build"
|
command = "pnpm run build"
|
||||||
|
|
||||||
|
[build.environment]
|
||||||
|
NODE_VERSION = "22"
|
||||||
|
|
||||||
[[redirects]]
|
[[redirects]]
|
||||||
from = "/*"
|
from = "/*"
|
||||||
to = "/index.html"
|
to = "/index.html"
|
||||||
status = 200
|
status = 200
|
||||||
|
|
||||||
[[headers]]
|
[[headers]]
|
||||||
for = "/manifest.webmanifest"
|
for = "/manifest.webmanifest"
|
||||||
[headers.values]
|
|
||||||
Content-Type = "application/manifest+json"
|
[headers.values]
|
||||||
|
Content-Type = "application/manifest+json"
|
||||||
+53
-51
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"private": true,
|
"private": true,
|
||||||
"packageManager": "pnpm@8.1.1",
|
"packageManager": "pnpm@10.30.2",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "vite-ssg build",
|
"build": "vite-ssg build",
|
||||||
"dev": "vite --port 3333 --open",
|
"dev": "vite --port 3333 --open",
|
||||||
@@ -17,58 +17,60 @@
|
|||||||
"sizecheck": "npx vite-bundle-visualizer"
|
"sizecheck": "npx vite-bundle-visualizer"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@unocss/reset": "^0.50.6",
|
"@unhead/vue": "catalog:frontend",
|
||||||
"@vueuse/core": "^9.13.0",
|
"@unocss/reset": "catalog:frontend",
|
||||||
"@vueuse/head": "^1.1.23",
|
"@vueuse/core": "catalog:frontend",
|
||||||
"nprogress": "^0.2.0",
|
"nprogress": "catalog:frontend",
|
||||||
"pinia": "^2.0.33",
|
"pinia": "catalog:frontend",
|
||||||
"vue": "^3.2.47",
|
"vue": "catalog:frontend",
|
||||||
"vue-demi": "^0.13.11",
|
"vue-i18n": "catalog:frontend",
|
||||||
"vue-i18n": "^9.2.2",
|
"vue-router": "catalog:frontend"
|
||||||
"vue-router": "^4.1.6"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@antfu/eslint-config": "^0.38.4",
|
"@antfu/eslint-config": "catalog:dev",
|
||||||
"@iconify-json/carbon": "^1.1.16",
|
"@iconify-json/carbon": "catalog:dev",
|
||||||
"@intlify/unplugin-vue-i18n": "^0.10.0",
|
"@intlify/unplugin-vue-i18n": "catalog:build",
|
||||||
"@types/markdown-it-link-attributes": "^3.0.1",
|
"@shikijs/markdown-it": "catalog:build",
|
||||||
"@types/nprogress": "^0.2.0",
|
"@types/markdown-it-link-attributes": "catalog:types",
|
||||||
"@vitejs/plugin-vue": "^4.1.0",
|
"@types/nprogress": "catalog:types",
|
||||||
"@vue-macros/volar": "^0.9.5",
|
"@unocss/eslint-config": "catalog:build",
|
||||||
"@vue/test-utils": "^2.3.2",
|
"@vitejs/plugin-vue": "catalog:build",
|
||||||
"critters": "^0.0.16",
|
"@vue-macros/volar": "catalog:dev",
|
||||||
"cross-env": "^7.0.3",
|
"@vue/test-utils": "catalog:dev",
|
||||||
"cypress": "^12.9.0",
|
"beasties": "catalog:build",
|
||||||
"cypress-vite": "^1.3.1",
|
"cypress": "catalog:dev",
|
||||||
"eslint": "^8.37.0",
|
"cypress-vite": "catalog:dev",
|
||||||
"eslint-plugin-cypress": "^2.13.2",
|
"eslint": "catalog:dev",
|
||||||
"https-localhost": "^4.7.1",
|
"eslint-plugin-cypress": "catalog:dev",
|
||||||
"lint-staged": "^13.2.0",
|
"eslint-plugin-format": "catalog:dev",
|
||||||
"markdown-it-link-attributes": "^4.0.1",
|
"https-localhost": "catalog:dev",
|
||||||
"markdown-it-shiki": "^0.8.0",
|
"lint-staged": "catalog:dev",
|
||||||
"pnpm": "^8.1.1",
|
"markdown-it-link-attributes": "catalog:build",
|
||||||
"shiki": "^0.14.1",
|
"rollup": "catalog:build",
|
||||||
"simple-git-hooks": "^2.8.1",
|
"shiki": "catalog:build",
|
||||||
"taze": "^0.9.1",
|
"simple-git-hooks": "catalog:dev",
|
||||||
"typescript": "^4.9.3",
|
"taze": "catalog:dev",
|
||||||
"unocss": "^0.50.6",
|
"typescript": "catalog:dev",
|
||||||
"unplugin-auto-import": "^0.15.2",
|
"unocss": "catalog:build",
|
||||||
"unplugin-vue-components": "^0.24.1",
|
"unplugin-auto-import": "catalog:build",
|
||||||
"unplugin-vue-macros": "^2.0.0",
|
"unplugin-vue-components": "catalog:build",
|
||||||
"vite": "^4.2.1",
|
"unplugin-vue-macros": "catalog:build",
|
||||||
"vite-bundle-visualizer": "^0.6.0",
|
"unplugin-vue-markdown": "catalog:build",
|
||||||
"vite-plugin-inspect": "^0.7.19",
|
"vite": "catalog:build",
|
||||||
"vite-plugin-pages": "^0.29.0",
|
"vite-bundle-visualizer": "catalog:build",
|
||||||
"vite-plugin-pwa": "^0.14.7",
|
"vite-plugin-inspect": "catalog:build",
|
||||||
"vite-plugin-vue-component-preview": "^1.1.5",
|
"vite-plugin-pwa": "catalog:build",
|
||||||
"vite-plugin-vue-inspector": "^3.4.0",
|
"vite-plugin-vue-devtools": "catalog:build",
|
||||||
"vite-plugin-vue-layouts": "^0.8.0",
|
"vite-plugin-vue-layouts": "catalog:build",
|
||||||
"vite-plugin-vue-markdown": "^0.22.4",
|
"vite-ssg": "catalog:build",
|
||||||
"vite-plugin-webfont-dl": "^3.7.0",
|
"vite-ssg-sitemap": "catalog:build",
|
||||||
"vite-ssg": "^0.22.1",
|
"vitest": "catalog:dev",
|
||||||
"vite-ssg-sitemap": "^0.4.3",
|
"vue-tsc": "catalog:dev"
|
||||||
"vitest": "^0.29.8",
|
},
|
||||||
"vue-tsc": "^1.3.8"
|
"resolutions": {
|
||||||
|
"unplugin": "catalog:build",
|
||||||
|
"vite": "catalog:build",
|
||||||
|
"vite-plugin-inspect": "catalog:build"
|
||||||
},
|
},
|
||||||
"simple-git-hooks": {
|
"simple-git-hooks": {
|
||||||
"pre-commit": "pnpm lint-staged"
|
"pre-commit": "pnpm lint-staged"
|
||||||
|
|||||||
Generated
+11215
-8036
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,68 @@
|
|||||||
|
shellEmulator: true
|
||||||
|
|
||||||
|
trustPolicy: no-downgrade
|
||||||
|
|
||||||
|
packages: []
|
||||||
|
|
||||||
|
catalogs:
|
||||||
|
|
||||||
|
build:
|
||||||
|
'@intlify/unplugin-vue-i18n': ^11.0.7
|
||||||
|
'@shikijs/markdown-it': ^3.23.0
|
||||||
|
'@unocss/eslint-config': ^66.6.1
|
||||||
|
'@vitejs/plugin-vue': ^6.0.4
|
||||||
|
beasties: ^0.4.1
|
||||||
|
markdown-it-link-attributes: ^4.0.1
|
||||||
|
rollup: ^4.59.0
|
||||||
|
shiki: ^3.23.0
|
||||||
|
unocss: ^66.6.1
|
||||||
|
unplugin: ^2.3.11
|
||||||
|
unplugin-auto-import: ^21.0.0
|
||||||
|
unplugin-vue-components: ^31.0.0
|
||||||
|
unplugin-vue-macros: ^2.14.5
|
||||||
|
unplugin-vue-markdown: ^29.2.0
|
||||||
|
vite: ^7.3.1
|
||||||
|
vite-bundle-visualizer: ^1.2.1
|
||||||
|
vite-plugin-inspect: ^11.3.3
|
||||||
|
vite-plugin-pwa: ^1.2.0
|
||||||
|
vite-plugin-vue-devtools: ^8.0.6
|
||||||
|
vite-plugin-vue-layouts: ^0.11.0
|
||||||
|
vite-ssg: ^28.3.0
|
||||||
|
vite-ssg-sitemap: ^0.10.0
|
||||||
|
|
||||||
|
dev:
|
||||||
|
'@antfu/eslint-config': ^7.6.1
|
||||||
|
'@iconify-json/carbon': ^1.2.18
|
||||||
|
'@vue-macros/volar': ^3.1.2
|
||||||
|
'@vue/test-utils': ^2.4.6
|
||||||
|
cypress: ^15.10.0
|
||||||
|
cypress-vite: ^1.8.0
|
||||||
|
eslint: ^10.0.2
|
||||||
|
eslint-plugin-cypress: ^6.1.0
|
||||||
|
eslint-plugin-format: ^2.0.1
|
||||||
|
https-localhost: ^4.7.1
|
||||||
|
lint-staged: ^16.2.7
|
||||||
|
simple-git-hooks: ^2.13.1
|
||||||
|
taze: ^19.9.2
|
||||||
|
typescript: ^5.8.2
|
||||||
|
vitest: ^4.0.18
|
||||||
|
vue-tsc: ^3.2.5
|
||||||
|
|
||||||
|
frontend:
|
||||||
|
'@unhead/vue': ^2.1.7
|
||||||
|
'@unocss/reset': ^66.6.1
|
||||||
|
'@vueuse/core': ^14.2.1
|
||||||
|
nprogress: ^0.2.0
|
||||||
|
pinia: ^3.0.4
|
||||||
|
vue: ^3.5.29
|
||||||
|
vue-i18n: ^11.2.8
|
||||||
|
vue-router: ^5.0.3
|
||||||
|
|
||||||
|
types:
|
||||||
|
'@types/markdown-it-link-attributes': ^3.0.5
|
||||||
|
'@types/nprogress': ^0.2.3
|
||||||
|
|
||||||
|
onlyBuiltDependencies:
|
||||||
|
- cypress
|
||||||
|
- esbuild
|
||||||
|
- simple-git-hooks
|
||||||
+6
-3
@@ -5,17 +5,20 @@
|
|||||||
useHead({
|
useHead({
|
||||||
title: 'Vitesse',
|
title: 'Vitesse',
|
||||||
meta: [
|
meta: [
|
||||||
{ name: 'description', content: 'Opinionated Vite Starter Template' },
|
{
|
||||||
|
name: 'description',
|
||||||
|
content: 'Opinionated Vite Starter Template',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: 'theme-color',
|
name: 'theme-color',
|
||||||
content: computed(() => isDark.value ? '#00aba9' : '#ffffff'),
|
content: () => isDark.value ? '#00aba9' : '#ffffff',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
link: [
|
link: [
|
||||||
{
|
{
|
||||||
rel: 'icon',
|
rel: 'icon',
|
||||||
type: 'image/svg+xml',
|
type: 'image/svg+xml',
|
||||||
href: computed(() => preferredDark.value ? '/favicon-dark.svg' : '/favicon.svg'),
|
href: () => preferredDark.value ? '/favicon-dark.svg' : '/favicon.svg',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
|
|||||||
Vendored
+347
-289
@@ -1,304 +1,329 @@
|
|||||||
/* eslint-disable */
|
/* eslint-disable */
|
||||||
/* prettier-ignore */
|
/* prettier-ignore */
|
||||||
// @ts-nocheck
|
// @ts-nocheck
|
||||||
|
// noinspection JSUnusedGlobalSymbols
|
||||||
// Generated by unplugin-auto-import
|
// Generated by unplugin-auto-import
|
||||||
|
// biome-ignore lint: disable
|
||||||
export {}
|
export {}
|
||||||
declare global {
|
declare global {
|
||||||
const $$: typeof import('vue/macros')['$$']
|
const EffectScope: typeof import('vue').EffectScope
|
||||||
const $: typeof import('vue/macros')['$']
|
const asyncComputed: typeof import('@vueuse/core').asyncComputed
|
||||||
const $computed: typeof import('vue/macros')['$computed']
|
const autoResetRef: typeof import('@vueuse/core').autoResetRef
|
||||||
const $customRef: typeof import('vue/macros')['$customRef']
|
const computed: typeof import('vue').computed
|
||||||
const $ref: typeof import('vue/macros')['$ref']
|
const computedAsync: typeof import('@vueuse/core').computedAsync
|
||||||
const $shallowRef: typeof import('vue/macros')['$shallowRef']
|
const computedEager: typeof import('@vueuse/core').computedEager
|
||||||
const $toRef: typeof import('vue/macros')['$toRef']
|
const computedInject: typeof import('@vueuse/core').computedInject
|
||||||
const EffectScope: typeof import('vue')['EffectScope']
|
const computedWithControl: typeof import('@vueuse/core').computedWithControl
|
||||||
const asyncComputed: typeof import('@vueuse/core')['asyncComputed']
|
const controlledComputed: typeof import('@vueuse/core').controlledComputed
|
||||||
const autoResetRef: typeof import('@vueuse/core')['autoResetRef']
|
const controlledRef: typeof import('@vueuse/core').controlledRef
|
||||||
const computed: typeof import('vue')['computed']
|
const createApp: typeof import('vue').createApp
|
||||||
const computedAsync: typeof import('@vueuse/core')['computedAsync']
|
const createEventHook: typeof import('@vueuse/core').createEventHook
|
||||||
const computedEager: typeof import('@vueuse/core')['computedEager']
|
const createGlobalState: typeof import('@vueuse/core').createGlobalState
|
||||||
const computedInject: typeof import('@vueuse/core')['computedInject']
|
const createInjectionState: typeof import('@vueuse/core').createInjectionState
|
||||||
const computedWithControl: typeof import('@vueuse/core')['computedWithControl']
|
const createReactiveFn: typeof import('@vueuse/core').createReactiveFn
|
||||||
const controlledComputed: typeof import('@vueuse/core')['controlledComputed']
|
const createRef: typeof import('@vueuse/core').createRef
|
||||||
const controlledRef: typeof import('@vueuse/core')['controlledRef']
|
const createReusableTemplate: typeof import('@vueuse/core').createReusableTemplate
|
||||||
const createApp: typeof import('vue')['createApp']
|
const createSharedComposable: typeof import('@vueuse/core').createSharedComposable
|
||||||
const createEventHook: typeof import('@vueuse/core')['createEventHook']
|
const createTemplatePromise: typeof import('@vueuse/core').createTemplatePromise
|
||||||
const createGlobalState: typeof import('@vueuse/core')['createGlobalState']
|
const createUnrefFn: typeof import('@vueuse/core').createUnrefFn
|
||||||
const createInjectionState: typeof import('@vueuse/core')['createInjectionState']
|
const customRef: typeof import('vue').customRef
|
||||||
const createReactiveFn: typeof import('@vueuse/core')['createReactiveFn']
|
const debouncedRef: typeof import('@vueuse/core').debouncedRef
|
||||||
const createSharedComposable: typeof import('@vueuse/core')['createSharedComposable']
|
const debouncedWatch: typeof import('@vueuse/core').debouncedWatch
|
||||||
const createUnrefFn: typeof import('@vueuse/core')['createUnrefFn']
|
const defineAsyncComponent: typeof import('vue').defineAsyncComponent
|
||||||
const customRef: typeof import('vue')['customRef']
|
const defineComponent: typeof import('vue').defineComponent
|
||||||
const debouncedRef: typeof import('@vueuse/core')['debouncedRef']
|
const definePage: typeof import('vue-router/experimental').definePage
|
||||||
const debouncedWatch: typeof import('@vueuse/core')['debouncedWatch']
|
const eagerComputed: typeof import('@vueuse/core').eagerComputed
|
||||||
const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
|
const effectScope: typeof import('vue').effectScope
|
||||||
const defineComponent: typeof import('vue')['defineComponent']
|
const extendRef: typeof import('@vueuse/core').extendRef
|
||||||
const eagerComputed: typeof import('@vueuse/core')['eagerComputed']
|
const getCurrentInstance: typeof import('vue').getCurrentInstance
|
||||||
const effectScope: typeof import('vue')['effectScope']
|
const getCurrentScope: typeof import('vue').getCurrentScope
|
||||||
const extendRef: typeof import('@vueuse/core')['extendRef']
|
const getCurrentWatcher: typeof import('vue').getCurrentWatcher
|
||||||
const getCurrentInstance: typeof import('vue')['getCurrentInstance']
|
const h: typeof import('vue').h
|
||||||
const getCurrentScope: typeof import('vue')['getCurrentScope']
|
const ignorableWatch: typeof import('@vueuse/core').ignorableWatch
|
||||||
const h: typeof import('vue')['h']
|
const inject: typeof import('vue').inject
|
||||||
const ignorableWatch: typeof import('@vueuse/core')['ignorableWatch']
|
const injectHead: typeof import('@unhead/vue').injectHead
|
||||||
const inject: typeof import('vue')['inject']
|
const injectLocal: typeof import('@vueuse/core').injectLocal
|
||||||
const isDark: typeof import('./composables/dark')['isDark']
|
const isDark: typeof import('./composables/dark').isDark
|
||||||
const isDefined: typeof import('@vueuse/core')['isDefined']
|
const isDefined: typeof import('@vueuse/core').isDefined
|
||||||
const isProxy: typeof import('vue')['isProxy']
|
const isProxy: typeof import('vue').isProxy
|
||||||
const isReactive: typeof import('vue')['isReactive']
|
const isReactive: typeof import('vue').isReactive
|
||||||
const isReadonly: typeof import('vue')['isReadonly']
|
const isReadonly: typeof import('vue').isReadonly
|
||||||
const isRef: typeof import('vue')['isRef']
|
const isRef: typeof import('vue').isRef
|
||||||
const makeDestructurable: typeof import('@vueuse/core')['makeDestructurable']
|
const isShallow: typeof import('vue').isShallow
|
||||||
const markRaw: typeof import('vue')['markRaw']
|
const makeDestructurable: typeof import('@vueuse/core').makeDestructurable
|
||||||
const nextTick: typeof import('vue')['nextTick']
|
const markRaw: typeof import('vue').markRaw
|
||||||
const onActivated: typeof import('vue')['onActivated']
|
const nextTick: typeof import('vue').nextTick
|
||||||
const onBeforeMount: typeof import('vue')['onBeforeMount']
|
const onActivated: typeof import('vue').onActivated
|
||||||
const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave']
|
const onBeforeMount: typeof import('vue').onBeforeMount
|
||||||
const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate']
|
const onBeforeRouteLeave: typeof import('vue-router').onBeforeRouteLeave
|
||||||
const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
|
const onBeforeRouteUpdate: typeof import('vue-router').onBeforeRouteUpdate
|
||||||
const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
|
const onBeforeUnmount: typeof import('vue').onBeforeUnmount
|
||||||
const onClickOutside: typeof import('@vueuse/core')['onClickOutside']
|
const onBeforeUpdate: typeof import('vue').onBeforeUpdate
|
||||||
const onDeactivated: typeof import('vue')['onDeactivated']
|
const onClickOutside: typeof import('@vueuse/core').onClickOutside
|
||||||
const onErrorCaptured: typeof import('vue')['onErrorCaptured']
|
const onDeactivated: typeof import('vue').onDeactivated
|
||||||
const onKeyStroke: typeof import('@vueuse/core')['onKeyStroke']
|
const onElementRemoval: typeof import('@vueuse/core').onElementRemoval
|
||||||
const onLongPress: typeof import('@vueuse/core')['onLongPress']
|
const onErrorCaptured: typeof import('vue').onErrorCaptured
|
||||||
const onMounted: typeof import('vue')['onMounted']
|
const onKeyStroke: typeof import('@vueuse/core').onKeyStroke
|
||||||
const onRenderTracked: typeof import('vue')['onRenderTracked']
|
const onLongPress: typeof import('@vueuse/core').onLongPress
|
||||||
const onRenderTriggered: typeof import('vue')['onRenderTriggered']
|
const onMounted: typeof import('vue').onMounted
|
||||||
const onScopeDispose: typeof import('vue')['onScopeDispose']
|
const onRenderTracked: typeof import('vue').onRenderTracked
|
||||||
const onServerPrefetch: typeof import('vue')['onServerPrefetch']
|
const onRenderTriggered: typeof import('vue').onRenderTriggered
|
||||||
const onStartTyping: typeof import('@vueuse/core')['onStartTyping']
|
const onScopeDispose: typeof import('vue').onScopeDispose
|
||||||
const onUnmounted: typeof import('vue')['onUnmounted']
|
const onServerPrefetch: typeof import('vue').onServerPrefetch
|
||||||
const onUpdated: typeof import('vue')['onUpdated']
|
const onStartTyping: typeof import('@vueuse/core').onStartTyping
|
||||||
const pausableWatch: typeof import('@vueuse/core')['pausableWatch']
|
const onUnmounted: typeof import('vue').onUnmounted
|
||||||
const preferredDark: typeof import('./composables/dark')['preferredDark']
|
const onUpdated: typeof import('vue').onUpdated
|
||||||
const provide: typeof import('vue')['provide']
|
const onWatcherCleanup: typeof import('vue').onWatcherCleanup
|
||||||
const reactify: typeof import('@vueuse/core')['reactify']
|
const pausableWatch: typeof import('@vueuse/core').pausableWatch
|
||||||
const reactifyObject: typeof import('@vueuse/core')['reactifyObject']
|
const preferredDark: typeof import('./composables/dark').preferredDark
|
||||||
const reactive: typeof import('vue')['reactive']
|
const provide: typeof import('vue').provide
|
||||||
const reactiveComputed: typeof import('@vueuse/core')['reactiveComputed']
|
const provideLocal: typeof import('@vueuse/core').provideLocal
|
||||||
const reactiveOmit: typeof import('@vueuse/core')['reactiveOmit']
|
const reactify: typeof import('@vueuse/core').reactify
|
||||||
const reactivePick: typeof import('@vueuse/core')['reactivePick']
|
const reactifyObject: typeof import('@vueuse/core').reactifyObject
|
||||||
const readonly: typeof import('vue')['readonly']
|
const reactive: typeof import('vue').reactive
|
||||||
const ref: typeof import('vue')['ref']
|
const reactiveComputed: typeof import('@vueuse/core').reactiveComputed
|
||||||
const refAutoReset: typeof import('@vueuse/core')['refAutoReset']
|
const reactiveOmit: typeof import('@vueuse/core').reactiveOmit
|
||||||
const refDebounced: typeof import('@vueuse/core')['refDebounced']
|
const reactivePick: typeof import('@vueuse/core').reactivePick
|
||||||
const refDefault: typeof import('@vueuse/core')['refDefault']
|
const readonly: typeof import('vue').readonly
|
||||||
const refThrottled: typeof import('@vueuse/core')['refThrottled']
|
const ref: typeof import('vue').ref
|
||||||
const refWithControl: typeof import('@vueuse/core')['refWithControl']
|
const refAutoReset: typeof import('@vueuse/core').refAutoReset
|
||||||
const resolveComponent: typeof import('vue')['resolveComponent']
|
const refDebounced: typeof import('@vueuse/core').refDebounced
|
||||||
const resolveRef: typeof import('@vueuse/core')['resolveRef']
|
const refDefault: typeof import('@vueuse/core').refDefault
|
||||||
|
const refManualReset: typeof import('@vueuse/core').refManualReset
|
||||||
|
const refThrottled: typeof import('@vueuse/core').refThrottled
|
||||||
|
const refWithControl: typeof import('@vueuse/core').refWithControl
|
||||||
|
const resolveComponent: typeof import('vue').resolveComponent
|
||||||
|
const resolveRef: typeof import('@vueuse/core').resolveRef
|
||||||
const resolveUnref: typeof import('@vueuse/core')['resolveUnref']
|
const resolveUnref: typeof import('@vueuse/core')['resolveUnref']
|
||||||
const shallowReactive: typeof import('vue')['shallowReactive']
|
const shallowReactive: typeof import('vue').shallowReactive
|
||||||
const shallowReadonly: typeof import('vue')['shallowReadonly']
|
const shallowReadonly: typeof import('vue').shallowReadonly
|
||||||
const shallowRef: typeof import('vue')['shallowRef']
|
const shallowRef: typeof import('vue').shallowRef
|
||||||
const syncRef: typeof import('@vueuse/core')['syncRef']
|
const syncRef: typeof import('@vueuse/core').syncRef
|
||||||
const syncRefs: typeof import('@vueuse/core')['syncRefs']
|
const syncRefs: typeof import('@vueuse/core').syncRefs
|
||||||
const templateRef: typeof import('@vueuse/core')['templateRef']
|
const templateRef: typeof import('@vueuse/core').templateRef
|
||||||
const throttledRef: typeof import('@vueuse/core')['throttledRef']
|
const throttledRef: typeof import('@vueuse/core').throttledRef
|
||||||
const throttledWatch: typeof import('@vueuse/core')['throttledWatch']
|
const throttledWatch: typeof import('@vueuse/core').throttledWatch
|
||||||
const toRaw: typeof import('vue')['toRaw']
|
const toRaw: typeof import('vue').toRaw
|
||||||
const toReactive: typeof import('@vueuse/core')['toReactive']
|
const toReactive: typeof import('@vueuse/core').toReactive
|
||||||
const toRef: typeof import('vue')['toRef']
|
const toRef: typeof import('vue').toRef
|
||||||
const toRefs: typeof import('vue')['toRefs']
|
const toRefs: typeof import('vue').toRefs
|
||||||
const toggleDark: typeof import('./composables/dark')['toggleDark']
|
const toValue: typeof import('vue').toValue
|
||||||
const triggerRef: typeof import('vue')['triggerRef']
|
const toggleDark: typeof import('./composables/dark').toggleDark
|
||||||
const tryOnBeforeMount: typeof import('@vueuse/core')['tryOnBeforeMount']
|
const triggerRef: typeof import('vue').triggerRef
|
||||||
const tryOnBeforeUnmount: typeof import('@vueuse/core')['tryOnBeforeUnmount']
|
const tryOnBeforeMount: typeof import('@vueuse/core').tryOnBeforeMount
|
||||||
const tryOnMounted: typeof import('@vueuse/core')['tryOnMounted']
|
const tryOnBeforeUnmount: typeof import('@vueuse/core').tryOnBeforeUnmount
|
||||||
const tryOnScopeDispose: typeof import('@vueuse/core')['tryOnScopeDispose']
|
const tryOnMounted: typeof import('@vueuse/core').tryOnMounted
|
||||||
const tryOnUnmounted: typeof import('@vueuse/core')['tryOnUnmounted']
|
const tryOnScopeDispose: typeof import('@vueuse/core').tryOnScopeDispose
|
||||||
const unref: typeof import('vue')['unref']
|
const tryOnUnmounted: typeof import('@vueuse/core').tryOnUnmounted
|
||||||
const unrefElement: typeof import('@vueuse/core')['unrefElement']
|
const unref: typeof import('vue').unref
|
||||||
const until: typeof import('@vueuse/core')['until']
|
const unrefElement: typeof import('@vueuse/core').unrefElement
|
||||||
const useActiveElement: typeof import('@vueuse/core')['useActiveElement']
|
const until: typeof import('@vueuse/core').until
|
||||||
const useArrayEvery: typeof import('@vueuse/core')['useArrayEvery']
|
const useActiveElement: typeof import('@vueuse/core').useActiveElement
|
||||||
const useArrayFilter: typeof import('@vueuse/core')['useArrayFilter']
|
const useAnimate: typeof import('@vueuse/core').useAnimate
|
||||||
const useArrayFind: typeof import('@vueuse/core')['useArrayFind']
|
const useArrayDifference: typeof import('@vueuse/core').useArrayDifference
|
||||||
const useArrayFindIndex: typeof import('@vueuse/core')['useArrayFindIndex']
|
const useArrayEvery: typeof import('@vueuse/core').useArrayEvery
|
||||||
const useArrayFindLast: typeof import('@vueuse/core')['useArrayFindLast']
|
const useArrayFilter: typeof import('@vueuse/core').useArrayFilter
|
||||||
const useArrayJoin: typeof import('@vueuse/core')['useArrayJoin']
|
const useArrayFind: typeof import('@vueuse/core').useArrayFind
|
||||||
const useArrayMap: typeof import('@vueuse/core')['useArrayMap']
|
const useArrayFindIndex: typeof import('@vueuse/core').useArrayFindIndex
|
||||||
const useArrayReduce: typeof import('@vueuse/core')['useArrayReduce']
|
const useArrayFindLast: typeof import('@vueuse/core').useArrayFindLast
|
||||||
const useArraySome: typeof import('@vueuse/core')['useArraySome']
|
const useArrayIncludes: typeof import('@vueuse/core').useArrayIncludes
|
||||||
const useArrayUnique: typeof import('@vueuse/core')['useArrayUnique']
|
const useArrayJoin: typeof import('@vueuse/core').useArrayJoin
|
||||||
const useAsyncQueue: typeof import('@vueuse/core')['useAsyncQueue']
|
const useArrayMap: typeof import('@vueuse/core').useArrayMap
|
||||||
const useAsyncState: typeof import('@vueuse/core')['useAsyncState']
|
const useArrayReduce: typeof import('@vueuse/core').useArrayReduce
|
||||||
const useAttrs: typeof import('vue')['useAttrs']
|
const useArraySome: typeof import('@vueuse/core').useArraySome
|
||||||
const useBase64: typeof import('@vueuse/core')['useBase64']
|
const useArrayUnique: typeof import('@vueuse/core').useArrayUnique
|
||||||
const useBattery: typeof import('@vueuse/core')['useBattery']
|
const useAsyncQueue: typeof import('@vueuse/core').useAsyncQueue
|
||||||
const useBluetooth: typeof import('@vueuse/core')['useBluetooth']
|
const useAsyncState: typeof import('@vueuse/core').useAsyncState
|
||||||
const useBreakpoints: typeof import('@vueuse/core')['useBreakpoints']
|
const useAttrs: typeof import('vue').useAttrs
|
||||||
const useBroadcastChannel: typeof import('@vueuse/core')['useBroadcastChannel']
|
const useBase64: typeof import('@vueuse/core').useBase64
|
||||||
const useBrowserLocation: typeof import('@vueuse/core')['useBrowserLocation']
|
const useBattery: typeof import('@vueuse/core').useBattery
|
||||||
const useCached: typeof import('@vueuse/core')['useCached']
|
const useBluetooth: typeof import('@vueuse/core').useBluetooth
|
||||||
const useClipboard: typeof import('@vueuse/core')['useClipboard']
|
const useBreakpoints: typeof import('@vueuse/core').useBreakpoints
|
||||||
const useCloned: typeof import('@vueuse/core')['useCloned']
|
const useBroadcastChannel: typeof import('@vueuse/core').useBroadcastChannel
|
||||||
const useColorMode: typeof import('@vueuse/core')['useColorMode']
|
const useBrowserLocation: typeof import('@vueuse/core').useBrowserLocation
|
||||||
const useConfirmDialog: typeof import('@vueuse/core')['useConfirmDialog']
|
const useCached: typeof import('@vueuse/core').useCached
|
||||||
const useCounter: typeof import('@vueuse/core')['useCounter']
|
const useClipboard: typeof import('@vueuse/core').useClipboard
|
||||||
const useCssModule: typeof import('vue')['useCssModule']
|
const useClipboardItems: typeof import('@vueuse/core').useClipboardItems
|
||||||
const useCssVar: typeof import('@vueuse/core')['useCssVar']
|
const useCloned: typeof import('@vueuse/core').useCloned
|
||||||
const useCssVars: typeof import('vue')['useCssVars']
|
const useColorMode: typeof import('@vueuse/core').useColorMode
|
||||||
const useCurrentElement: typeof import('@vueuse/core')['useCurrentElement']
|
const useConfirmDialog: typeof import('@vueuse/core').useConfirmDialog
|
||||||
const useCycleList: typeof import('@vueuse/core')['useCycleList']
|
const useCountdown: typeof import('@vueuse/core').useCountdown
|
||||||
const useDark: typeof import('@vueuse/core')['useDark']
|
const useCounter: typeof import('@vueuse/core').useCounter
|
||||||
const useDateFormat: typeof import('@vueuse/core')['useDateFormat']
|
const useCssModule: typeof import('vue').useCssModule
|
||||||
const useDebounce: typeof import('@vueuse/core')['useDebounce']
|
const useCssSupports: typeof import('@vueuse/core').useCssSupports
|
||||||
const useDebounceFn: typeof import('@vueuse/core')['useDebounceFn']
|
const useCssVar: typeof import('@vueuse/core').useCssVar
|
||||||
const useDebouncedRefHistory: typeof import('@vueuse/core')['useDebouncedRefHistory']
|
const useCssVars: typeof import('vue').useCssVars
|
||||||
const useDeviceMotion: typeof import('@vueuse/core')['useDeviceMotion']
|
const useCurrentElement: typeof import('@vueuse/core').useCurrentElement
|
||||||
const useDeviceOrientation: typeof import('@vueuse/core')['useDeviceOrientation']
|
const useCycleList: typeof import('@vueuse/core').useCycleList
|
||||||
const useDevicePixelRatio: typeof import('@vueuse/core')['useDevicePixelRatio']
|
const useDark: typeof import('@vueuse/core').useDark
|
||||||
const useDevicesList: typeof import('@vueuse/core')['useDevicesList']
|
const useDateFormat: typeof import('@vueuse/core').useDateFormat
|
||||||
const useDisplayMedia: typeof import('@vueuse/core')['useDisplayMedia']
|
const useDebounce: typeof import('@vueuse/core').useDebounce
|
||||||
const useDocumentVisibility: typeof import('@vueuse/core')['useDocumentVisibility']
|
const useDebounceFn: typeof import('@vueuse/core').useDebounceFn
|
||||||
const useDraggable: typeof import('@vueuse/core')['useDraggable']
|
const useDebouncedRefHistory: typeof import('@vueuse/core').useDebouncedRefHistory
|
||||||
const useDropZone: typeof import('@vueuse/core')['useDropZone']
|
const useDeviceMotion: typeof import('@vueuse/core').useDeviceMotion
|
||||||
const useElementBounding: typeof import('@vueuse/core')['useElementBounding']
|
const useDeviceOrientation: typeof import('@vueuse/core').useDeviceOrientation
|
||||||
const useElementByPoint: typeof import('@vueuse/core')['useElementByPoint']
|
const useDevicePixelRatio: typeof import('@vueuse/core').useDevicePixelRatio
|
||||||
const useElementHover: typeof import('@vueuse/core')['useElementHover']
|
const useDevicesList: typeof import('@vueuse/core').useDevicesList
|
||||||
const useElementSize: typeof import('@vueuse/core')['useElementSize']
|
const useDisplayMedia: typeof import('@vueuse/core').useDisplayMedia
|
||||||
const useElementVisibility: typeof import('@vueuse/core')['useElementVisibility']
|
const useDocumentVisibility: typeof import('@vueuse/core').useDocumentVisibility
|
||||||
const useEventBus: typeof import('@vueuse/core')['useEventBus']
|
const useDraggable: typeof import('@vueuse/core').useDraggable
|
||||||
const useEventListener: typeof import('@vueuse/core')['useEventListener']
|
const useDropZone: typeof import('@vueuse/core').useDropZone
|
||||||
const useEventSource: typeof import('@vueuse/core')['useEventSource']
|
const useElementBounding: typeof import('@vueuse/core').useElementBounding
|
||||||
const useEyeDropper: typeof import('@vueuse/core')['useEyeDropper']
|
const useElementByPoint: typeof import('@vueuse/core').useElementByPoint
|
||||||
const useFavicon: typeof import('@vueuse/core')['useFavicon']
|
const useElementHover: typeof import('@vueuse/core').useElementHover
|
||||||
const useFetch: typeof import('@vueuse/core')['useFetch']
|
const useElementSize: typeof import('@vueuse/core').useElementSize
|
||||||
const useFileDialog: typeof import('@vueuse/core')['useFileDialog']
|
const useElementVisibility: typeof import('@vueuse/core').useElementVisibility
|
||||||
const useFileSystemAccess: typeof import('@vueuse/core')['useFileSystemAccess']
|
const useEventBus: typeof import('@vueuse/core').useEventBus
|
||||||
const useFocus: typeof import('@vueuse/core')['useFocus']
|
const useEventListener: typeof import('@vueuse/core').useEventListener
|
||||||
const useFocusWithin: typeof import('@vueuse/core')['useFocusWithin']
|
const useEventSource: typeof import('@vueuse/core').useEventSource
|
||||||
const useFps: typeof import('@vueuse/core')['useFps']
|
const useEyeDropper: typeof import('@vueuse/core').useEyeDropper
|
||||||
const useFullscreen: typeof import('@vueuse/core')['useFullscreen']
|
const useFavicon: typeof import('@vueuse/core').useFavicon
|
||||||
const useGamepad: typeof import('@vueuse/core')['useGamepad']
|
const useFetch: typeof import('@vueuse/core').useFetch
|
||||||
const useGeolocation: typeof import('@vueuse/core')['useGeolocation']
|
const useFileDialog: typeof import('@vueuse/core').useFileDialog
|
||||||
const useHead: typeof import('@vueuse/head')['useHead']
|
const useFileSystemAccess: typeof import('@vueuse/core').useFileSystemAccess
|
||||||
const useI18n: typeof import('vue-i18n')['useI18n']
|
const useFocus: typeof import('@vueuse/core').useFocus
|
||||||
const useIdle: typeof import('@vueuse/core')['useIdle']
|
const useFocusWithin: typeof import('@vueuse/core').useFocusWithin
|
||||||
const useImage: typeof import('@vueuse/core')['useImage']
|
const useFps: typeof import('@vueuse/core').useFps
|
||||||
const useInfiniteScroll: typeof import('@vueuse/core')['useInfiniteScroll']
|
const useFullscreen: typeof import('@vueuse/core').useFullscreen
|
||||||
const useIntersectionObserver: typeof import('@vueuse/core')['useIntersectionObserver']
|
const useGamepad: typeof import('@vueuse/core').useGamepad
|
||||||
const useInterval: typeof import('@vueuse/core')['useInterval']
|
const useGeolocation: typeof import('@vueuse/core').useGeolocation
|
||||||
const useIntervalFn: typeof import('@vueuse/core')['useIntervalFn']
|
const useHead: typeof import('@unhead/vue').useHead
|
||||||
const useKeyModifier: typeof import('@vueuse/core')['useKeyModifier']
|
const useHeadSafe: typeof import('@unhead/vue').useHeadSafe
|
||||||
const useLastChanged: typeof import('@vueuse/core')['useLastChanged']
|
const useI18n: typeof import('vue-i18n').useI18n
|
||||||
const useLink: typeof import('vue-router')['useLink']
|
const useId: typeof import('vue').useId
|
||||||
const useLocalStorage: typeof import('@vueuse/core')['useLocalStorage']
|
const useIdle: typeof import('@vueuse/core').useIdle
|
||||||
const useMagicKeys: typeof import('@vueuse/core')['useMagicKeys']
|
const useImage: typeof import('@vueuse/core').useImage
|
||||||
const useManualRefHistory: typeof import('@vueuse/core')['useManualRefHistory']
|
const useInfiniteScroll: typeof import('@vueuse/core').useInfiniteScroll
|
||||||
const useMediaControls: typeof import('@vueuse/core')['useMediaControls']
|
const useIntersectionObserver: typeof import('@vueuse/core').useIntersectionObserver
|
||||||
const useMediaQuery: typeof import('@vueuse/core')['useMediaQuery']
|
const useInterval: typeof import('@vueuse/core').useInterval
|
||||||
const useMemoize: typeof import('@vueuse/core')['useMemoize']
|
const useIntervalFn: typeof import('@vueuse/core').useIntervalFn
|
||||||
const useMemory: typeof import('@vueuse/core')['useMemory']
|
const useKeyModifier: typeof import('@vueuse/core').useKeyModifier
|
||||||
const useMounted: typeof import('@vueuse/core')['useMounted']
|
const useLastChanged: typeof import('@vueuse/core').useLastChanged
|
||||||
const useMouse: typeof import('@vueuse/core')['useMouse']
|
const useLink: typeof import('vue-router/auto').useLink
|
||||||
const useMouseInElement: typeof import('@vueuse/core')['useMouseInElement']
|
const useLocalStorage: typeof import('@vueuse/core').useLocalStorage
|
||||||
const useMousePressed: typeof import('@vueuse/core')['useMousePressed']
|
const useMagicKeys: typeof import('@vueuse/core').useMagicKeys
|
||||||
const useMutationObserver: typeof import('@vueuse/core')['useMutationObserver']
|
const useManualRefHistory: typeof import('@vueuse/core').useManualRefHistory
|
||||||
const useNavigatorLanguage: typeof import('@vueuse/core')['useNavigatorLanguage']
|
const useMediaControls: typeof import('@vueuse/core').useMediaControls
|
||||||
const useNetwork: typeof import('@vueuse/core')['useNetwork']
|
const useMediaQuery: typeof import('@vueuse/core').useMediaQuery
|
||||||
const useNow: typeof import('@vueuse/core')['useNow']
|
const useMemoize: typeof import('@vueuse/core').useMemoize
|
||||||
const useObjectUrl: typeof import('@vueuse/core')['useObjectUrl']
|
const useMemory: typeof import('@vueuse/core').useMemory
|
||||||
const useOffsetPagination: typeof import('@vueuse/core')['useOffsetPagination']
|
const useModel: typeof import('vue').useModel
|
||||||
const useOnline: typeof import('@vueuse/core')['useOnline']
|
const useMounted: typeof import('@vueuse/core').useMounted
|
||||||
const usePageLeave: typeof import('@vueuse/core')['usePageLeave']
|
const useMouse: typeof import('@vueuse/core').useMouse
|
||||||
const useParallax: typeof import('@vueuse/core')['useParallax']
|
const useMouseInElement: typeof import('@vueuse/core').useMouseInElement
|
||||||
const usePermission: typeof import('@vueuse/core')['usePermission']
|
const useMousePressed: typeof import('@vueuse/core').useMousePressed
|
||||||
const usePointer: typeof import('@vueuse/core')['usePointer']
|
const useMutationObserver: typeof import('@vueuse/core').useMutationObserver
|
||||||
const usePointerLock: typeof import('@vueuse/core')['usePointerLock']
|
const useNavigatorLanguage: typeof import('@vueuse/core').useNavigatorLanguage
|
||||||
const usePointerSwipe: typeof import('@vueuse/core')['usePointerSwipe']
|
const useNetwork: typeof import('@vueuse/core').useNetwork
|
||||||
const usePreferredColorScheme: typeof import('@vueuse/core')['usePreferredColorScheme']
|
const useNow: typeof import('@vueuse/core').useNow
|
||||||
const usePreferredContrast: typeof import('@vueuse/core')['usePreferredContrast']
|
const useObjectUrl: typeof import('@vueuse/core').useObjectUrl
|
||||||
const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark']
|
const useOffsetPagination: typeof import('@vueuse/core').useOffsetPagination
|
||||||
const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages']
|
const useOnline: typeof import('@vueuse/core').useOnline
|
||||||
const usePreferredReducedMotion: typeof import('@vueuse/core')['usePreferredReducedMotion']
|
const usePageLeave: typeof import('@vueuse/core').usePageLeave
|
||||||
const usePrevious: typeof import('@vueuse/core')['usePrevious']
|
const useParallax: typeof import('@vueuse/core').useParallax
|
||||||
const useRafFn: typeof import('@vueuse/core')['useRafFn']
|
const useParentElement: typeof import('@vueuse/core').useParentElement
|
||||||
const useRefHistory: typeof import('@vueuse/core')['useRefHistory']
|
const usePerformanceObserver: typeof import('@vueuse/core').usePerformanceObserver
|
||||||
const useResizeObserver: typeof import('@vueuse/core')['useResizeObserver']
|
const usePermission: typeof import('@vueuse/core').usePermission
|
||||||
const useRoute: typeof import('vue-router')['useRoute']
|
const usePointer: typeof import('@vueuse/core').usePointer
|
||||||
const useRouter: typeof import('vue-router')['useRouter']
|
const usePointerLock: typeof import('@vueuse/core').usePointerLock
|
||||||
const useScreenOrientation: typeof import('@vueuse/core')['useScreenOrientation']
|
const usePointerSwipe: typeof import('@vueuse/core').usePointerSwipe
|
||||||
const useScreenSafeArea: typeof import('@vueuse/core')['useScreenSafeArea']
|
const usePreferredColorScheme: typeof import('@vueuse/core').usePreferredColorScheme
|
||||||
const useScriptTag: typeof import('@vueuse/core')['useScriptTag']
|
const usePreferredContrast: typeof import('@vueuse/core').usePreferredContrast
|
||||||
const useScroll: typeof import('@vueuse/core')['useScroll']
|
const usePreferredDark: typeof import('@vueuse/core').usePreferredDark
|
||||||
const useScrollLock: typeof import('@vueuse/core')['useScrollLock']
|
const usePreferredLanguages: typeof import('@vueuse/core').usePreferredLanguages
|
||||||
const useSessionStorage: typeof import('@vueuse/core')['useSessionStorage']
|
const usePreferredReducedMotion: typeof import('@vueuse/core').usePreferredReducedMotion
|
||||||
const useShare: typeof import('@vueuse/core')['useShare']
|
const usePreferredReducedTransparency: typeof import('@vueuse/core').usePreferredReducedTransparency
|
||||||
const useSlots: typeof import('vue')['useSlots']
|
const usePrevious: typeof import('@vueuse/core').usePrevious
|
||||||
const useSorted: typeof import('@vueuse/core')['useSorted']
|
const useRafFn: typeof import('@vueuse/core').useRafFn
|
||||||
const useSpeechRecognition: typeof import('@vueuse/core')['useSpeechRecognition']
|
const useRefHistory: typeof import('@vueuse/core').useRefHistory
|
||||||
const useSpeechSynthesis: typeof import('@vueuse/core')['useSpeechSynthesis']
|
const useResizeObserver: typeof import('@vueuse/core').useResizeObserver
|
||||||
const useStepper: typeof import('@vueuse/core')['useStepper']
|
const useRoute: typeof import('vue-router').useRoute
|
||||||
const useStorage: typeof import('@vueuse/core')['useStorage']
|
const useRouter: typeof import('vue-router').useRouter
|
||||||
const useStorageAsync: typeof import('@vueuse/core')['useStorageAsync']
|
const useSSRWidth: typeof import('@vueuse/core').useSSRWidth
|
||||||
const useStyleTag: typeof import('@vueuse/core')['useStyleTag']
|
const useScreenOrientation: typeof import('@vueuse/core').useScreenOrientation
|
||||||
const useSupported: typeof import('@vueuse/core')['useSupported']
|
const useScreenSafeArea: typeof import('@vueuse/core').useScreenSafeArea
|
||||||
const useSwipe: typeof import('@vueuse/core')['useSwipe']
|
const useScriptTag: typeof import('@vueuse/core').useScriptTag
|
||||||
const useTemplateRefsList: typeof import('@vueuse/core')['useTemplateRefsList']
|
const useScroll: typeof import('@vueuse/core').useScroll
|
||||||
const useTextDirection: typeof import('@vueuse/core')['useTextDirection']
|
const useScrollLock: typeof import('@vueuse/core').useScrollLock
|
||||||
const useTextSelection: typeof import('@vueuse/core')['useTextSelection']
|
const useSeoMeta: typeof import('@unhead/vue').useSeoMeta
|
||||||
const useTextareaAutosize: typeof import('@vueuse/core')['useTextareaAutosize']
|
const useServerHead: typeof import('@unhead/vue').useServerHead
|
||||||
const useThrottle: typeof import('@vueuse/core')['useThrottle']
|
const useServerHeadSafe: typeof import('@unhead/vue').useServerHeadSafe
|
||||||
const useThrottleFn: typeof import('@vueuse/core')['useThrottleFn']
|
const useServerSeoMeta: typeof import('@unhead/vue').useServerSeoMeta
|
||||||
const useThrottledRefHistory: typeof import('@vueuse/core')['useThrottledRefHistory']
|
const useSessionStorage: typeof import('@vueuse/core').useSessionStorage
|
||||||
const useTimeAgo: typeof import('@vueuse/core')['useTimeAgo']
|
const useShare: typeof import('@vueuse/core').useShare
|
||||||
const useTimeout: typeof import('@vueuse/core')['useTimeout']
|
const useSlots: typeof import('vue').useSlots
|
||||||
const useTimeoutFn: typeof import('@vueuse/core')['useTimeoutFn']
|
const useSorted: typeof import('@vueuse/core').useSorted
|
||||||
const useTimeoutPoll: typeof import('@vueuse/core')['useTimeoutPoll']
|
const useSpeechRecognition: typeof import('@vueuse/core').useSpeechRecognition
|
||||||
const useTimestamp: typeof import('@vueuse/core')['useTimestamp']
|
const useSpeechSynthesis: typeof import('@vueuse/core').useSpeechSynthesis
|
||||||
const useTitle: typeof import('@vueuse/core')['useTitle']
|
const useStepper: typeof import('@vueuse/core').useStepper
|
||||||
const useToNumber: typeof import('@vueuse/core')['useToNumber']
|
const useStorage: typeof import('@vueuse/core').useStorage
|
||||||
const useToString: typeof import('@vueuse/core')['useToString']
|
const useStorageAsync: typeof import('@vueuse/core').useStorageAsync
|
||||||
const useToggle: typeof import('@vueuse/core')['useToggle']
|
const useStyleTag: typeof import('@vueuse/core').useStyleTag
|
||||||
const useTransition: typeof import('@vueuse/core')['useTransition']
|
const useSupported: typeof import('@vueuse/core').useSupported
|
||||||
const useUrlSearchParams: typeof import('@vueuse/core')['useUrlSearchParams']
|
const useSwipe: typeof import('@vueuse/core').useSwipe
|
||||||
const useUserMedia: typeof import('@vueuse/core')['useUserMedia']
|
const useTemplateRef: typeof import('vue').useTemplateRef
|
||||||
const useUserStore: typeof import('./stores/user')['useUserStore']
|
const useTemplateRefsList: typeof import('@vueuse/core').useTemplateRefsList
|
||||||
const useVModel: typeof import('@vueuse/core')['useVModel']
|
const useTextDirection: typeof import('@vueuse/core').useTextDirection
|
||||||
const useVModels: typeof import('@vueuse/core')['useVModels']
|
const useTextSelection: typeof import('@vueuse/core').useTextSelection
|
||||||
const useVibrate: typeof import('@vueuse/core')['useVibrate']
|
const useTextareaAutosize: typeof import('@vueuse/core').useTextareaAutosize
|
||||||
const useVirtualList: typeof import('@vueuse/core')['useVirtualList']
|
const useThrottle: typeof import('@vueuse/core').useThrottle
|
||||||
const useWakeLock: typeof import('@vueuse/core')['useWakeLock']
|
const useThrottleFn: typeof import('@vueuse/core').useThrottleFn
|
||||||
const useWebNotification: typeof import('@vueuse/core')['useWebNotification']
|
const useThrottledRefHistory: typeof import('@vueuse/core').useThrottledRefHistory
|
||||||
const useWebSocket: typeof import('@vueuse/core')['useWebSocket']
|
const useTimeAgo: typeof import('@vueuse/core').useTimeAgo
|
||||||
const useWebWorker: typeof import('@vueuse/core')['useWebWorker']
|
const useTimeAgoIntl: typeof import('@vueuse/core').useTimeAgoIntl
|
||||||
const useWebWorkerFn: typeof import('@vueuse/core')['useWebWorkerFn']
|
const useTimeout: typeof import('@vueuse/core').useTimeout
|
||||||
const useWindowFocus: typeof import('@vueuse/core')['useWindowFocus']
|
const useTimeoutFn: typeof import('@vueuse/core').useTimeoutFn
|
||||||
const useWindowScroll: typeof import('@vueuse/core')['useWindowScroll']
|
const useTimeoutPoll: typeof import('@vueuse/core').useTimeoutPoll
|
||||||
const useWindowSize: typeof import('@vueuse/core')['useWindowSize']
|
const useTimestamp: typeof import('@vueuse/core').useTimestamp
|
||||||
const watch: typeof import('vue')['watch']
|
const useTitle: typeof import('@vueuse/core').useTitle
|
||||||
const watchArray: typeof import('@vueuse/core')['watchArray']
|
const useToNumber: typeof import('@vueuse/core').useToNumber
|
||||||
const watchAtMost: typeof import('@vueuse/core')['watchAtMost']
|
const useToString: typeof import('@vueuse/core').useToString
|
||||||
const watchDebounced: typeof import('@vueuse/core')['watchDebounced']
|
const useToggle: typeof import('@vueuse/core').useToggle
|
||||||
const watchEffect: typeof import('vue')['watchEffect']
|
const useTransition: typeof import('@vueuse/core').useTransition
|
||||||
const watchIgnorable: typeof import('@vueuse/core')['watchIgnorable']
|
const useUrlSearchParams: typeof import('@vueuse/core').useUrlSearchParams
|
||||||
const watchOnce: typeof import('@vueuse/core')['watchOnce']
|
const useUserMedia: typeof import('@vueuse/core').useUserMedia
|
||||||
const watchPausable: typeof import('@vueuse/core')['watchPausable']
|
const useUserStore: typeof import('./stores/user').useUserStore
|
||||||
const watchPostEffect: typeof import('vue')['watchPostEffect']
|
const useVModel: typeof import('@vueuse/core').useVModel
|
||||||
const watchSyncEffect: typeof import('vue')['watchSyncEffect']
|
const useVModels: typeof import('@vueuse/core').useVModels
|
||||||
const watchThrottled: typeof import('@vueuse/core')['watchThrottled']
|
const useVibrate: typeof import('@vueuse/core').useVibrate
|
||||||
const watchTriggerable: typeof import('@vueuse/core')['watchTriggerable']
|
const useVirtualList: typeof import('@vueuse/core').useVirtualList
|
||||||
const watchWithFilter: typeof import('@vueuse/core')['watchWithFilter']
|
const useWakeLock: typeof import('@vueuse/core').useWakeLock
|
||||||
const whenever: typeof import('@vueuse/core')['whenever']
|
const useWebNotification: typeof import('@vueuse/core').useWebNotification
|
||||||
|
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 watchArray: typeof import('@vueuse/core').watchArray
|
||||||
|
const watchAtMost: typeof import('@vueuse/core').watchAtMost
|
||||||
|
const watchDebounced: typeof import('@vueuse/core').watchDebounced
|
||||||
|
const watchDeep: typeof import('@vueuse/core').watchDeep
|
||||||
|
const watchEffect: typeof import('vue').watchEffect
|
||||||
|
const watchIgnorable: typeof import('@vueuse/core').watchIgnorable
|
||||||
|
const watchImmediate: typeof import('@vueuse/core').watchImmediate
|
||||||
|
const watchOnce: typeof import('@vueuse/core').watchOnce
|
||||||
|
const watchPausable: typeof import('@vueuse/core').watchPausable
|
||||||
|
const watchPostEffect: typeof import('vue').watchPostEffect
|
||||||
|
const watchSyncEffect: typeof import('vue').watchSyncEffect
|
||||||
|
const watchThrottled: typeof import('@vueuse/core').watchThrottled
|
||||||
|
const watchTriggerable: typeof import('@vueuse/core').watchTriggerable
|
||||||
|
const watchWithFilter: typeof import('@vueuse/core').watchWithFilter
|
||||||
|
const whenever: typeof import('@vueuse/core').whenever
|
||||||
}
|
}
|
||||||
// for type re-export
|
// for type re-export
|
||||||
declare global {
|
declare global {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
export type { Component, ComponentPublicInstance, ComputedRef, InjectionKey, PropType, Ref, VNode } from 'vue'
|
export type { Component, Slot, Slots, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, ShallowRef, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue'
|
||||||
|
import('vue')
|
||||||
}
|
}
|
||||||
|
|
||||||
// for vue template auto import
|
// for vue template auto import
|
||||||
import { UnwrapRef } from 'vue'
|
import { UnwrapRef } from 'vue'
|
||||||
declare module 'vue' {
|
declare module 'vue' {
|
||||||
|
interface GlobalComponents {}
|
||||||
interface ComponentCustomProperties {
|
interface ComponentCustomProperties {
|
||||||
readonly $$: UnwrapRef<typeof import('vue/macros')['$$']>
|
|
||||||
readonly $: UnwrapRef<typeof import('vue/macros')['$']>
|
|
||||||
readonly $computed: UnwrapRef<typeof import('vue/macros')['$computed']>
|
|
||||||
readonly $customRef: UnwrapRef<typeof import('vue/macros')['$customRef']>
|
|
||||||
readonly $ref: UnwrapRef<typeof import('vue/macros')['$ref']>
|
|
||||||
readonly $shallowRef: UnwrapRef<typeof import('vue/macros')['$shallowRef']>
|
|
||||||
readonly $toRef: UnwrapRef<typeof import('vue/macros')['$toRef']>
|
|
||||||
readonly EffectScope: UnwrapRef<typeof import('vue')['EffectScope']>
|
readonly EffectScope: UnwrapRef<typeof import('vue')['EffectScope']>
|
||||||
readonly asyncComputed: UnwrapRef<typeof import('@vueuse/core')['asyncComputed']>
|
readonly asyncComputed: UnwrapRef<typeof import('@vueuse/core')['asyncComputed']>
|
||||||
readonly autoResetRef: UnwrapRef<typeof import('@vueuse/core')['autoResetRef']>
|
readonly autoResetRef: UnwrapRef<typeof import('@vueuse/core')['autoResetRef']>
|
||||||
@@ -314,27 +339,35 @@ declare module 'vue' {
|
|||||||
readonly createGlobalState: UnwrapRef<typeof import('@vueuse/core')['createGlobalState']>
|
readonly createGlobalState: UnwrapRef<typeof import('@vueuse/core')['createGlobalState']>
|
||||||
readonly createInjectionState: UnwrapRef<typeof import('@vueuse/core')['createInjectionState']>
|
readonly createInjectionState: UnwrapRef<typeof import('@vueuse/core')['createInjectionState']>
|
||||||
readonly createReactiveFn: UnwrapRef<typeof import('@vueuse/core')['createReactiveFn']>
|
readonly createReactiveFn: UnwrapRef<typeof import('@vueuse/core')['createReactiveFn']>
|
||||||
|
readonly createRef: UnwrapRef<typeof import('@vueuse/core')['createRef']>
|
||||||
|
readonly createReusableTemplate: UnwrapRef<typeof import('@vueuse/core')['createReusableTemplate']>
|
||||||
readonly createSharedComposable: UnwrapRef<typeof import('@vueuse/core')['createSharedComposable']>
|
readonly createSharedComposable: UnwrapRef<typeof import('@vueuse/core')['createSharedComposable']>
|
||||||
|
readonly createTemplatePromise: UnwrapRef<typeof import('@vueuse/core')['createTemplatePromise']>
|
||||||
readonly createUnrefFn: UnwrapRef<typeof import('@vueuse/core')['createUnrefFn']>
|
readonly createUnrefFn: UnwrapRef<typeof import('@vueuse/core')['createUnrefFn']>
|
||||||
readonly customRef: UnwrapRef<typeof import('vue')['customRef']>
|
readonly customRef: UnwrapRef<typeof import('vue')['customRef']>
|
||||||
readonly debouncedRef: UnwrapRef<typeof import('@vueuse/core')['debouncedRef']>
|
readonly debouncedRef: UnwrapRef<typeof import('@vueuse/core')['debouncedRef']>
|
||||||
readonly debouncedWatch: UnwrapRef<typeof import('@vueuse/core')['debouncedWatch']>
|
readonly debouncedWatch: UnwrapRef<typeof import('@vueuse/core')['debouncedWatch']>
|
||||||
readonly defineAsyncComponent: UnwrapRef<typeof import('vue')['defineAsyncComponent']>
|
readonly defineAsyncComponent: UnwrapRef<typeof import('vue')['defineAsyncComponent']>
|
||||||
readonly defineComponent: UnwrapRef<typeof import('vue')['defineComponent']>
|
readonly defineComponent: UnwrapRef<typeof import('vue')['defineComponent']>
|
||||||
|
readonly definePage: UnwrapRef<typeof import('vue-router/experimental')['definePage']>
|
||||||
readonly eagerComputed: UnwrapRef<typeof import('@vueuse/core')['eagerComputed']>
|
readonly eagerComputed: UnwrapRef<typeof import('@vueuse/core')['eagerComputed']>
|
||||||
readonly effectScope: UnwrapRef<typeof import('vue')['effectScope']>
|
readonly effectScope: UnwrapRef<typeof import('vue')['effectScope']>
|
||||||
readonly extendRef: UnwrapRef<typeof import('@vueuse/core')['extendRef']>
|
readonly extendRef: UnwrapRef<typeof import('@vueuse/core')['extendRef']>
|
||||||
readonly getCurrentInstance: UnwrapRef<typeof import('vue')['getCurrentInstance']>
|
readonly getCurrentInstance: UnwrapRef<typeof import('vue')['getCurrentInstance']>
|
||||||
readonly getCurrentScope: UnwrapRef<typeof import('vue')['getCurrentScope']>
|
readonly getCurrentScope: UnwrapRef<typeof import('vue')['getCurrentScope']>
|
||||||
|
readonly getCurrentWatcher: UnwrapRef<typeof import('vue')['getCurrentWatcher']>
|
||||||
readonly h: UnwrapRef<typeof import('vue')['h']>
|
readonly h: UnwrapRef<typeof import('vue')['h']>
|
||||||
readonly ignorableWatch: UnwrapRef<typeof import('@vueuse/core')['ignorableWatch']>
|
readonly ignorableWatch: UnwrapRef<typeof import('@vueuse/core')['ignorableWatch']>
|
||||||
readonly inject: UnwrapRef<typeof import('vue')['inject']>
|
readonly inject: UnwrapRef<typeof import('vue')['inject']>
|
||||||
|
readonly injectHead: UnwrapRef<typeof import('@unhead/vue')['injectHead']>
|
||||||
|
readonly injectLocal: UnwrapRef<typeof import('@vueuse/core')['injectLocal']>
|
||||||
readonly isDark: UnwrapRef<typeof import('./composables/dark')['isDark']>
|
readonly isDark: UnwrapRef<typeof import('./composables/dark')['isDark']>
|
||||||
readonly isDefined: UnwrapRef<typeof import('@vueuse/core')['isDefined']>
|
readonly isDefined: UnwrapRef<typeof import('@vueuse/core')['isDefined']>
|
||||||
readonly isProxy: UnwrapRef<typeof import('vue')['isProxy']>
|
readonly isProxy: UnwrapRef<typeof import('vue')['isProxy']>
|
||||||
readonly isReactive: UnwrapRef<typeof import('vue')['isReactive']>
|
readonly isReactive: UnwrapRef<typeof import('vue')['isReactive']>
|
||||||
readonly isReadonly: UnwrapRef<typeof import('vue')['isReadonly']>
|
readonly isReadonly: UnwrapRef<typeof import('vue')['isReadonly']>
|
||||||
readonly isRef: UnwrapRef<typeof import('vue')['isRef']>
|
readonly isRef: UnwrapRef<typeof import('vue')['isRef']>
|
||||||
|
readonly isShallow: UnwrapRef<typeof import('vue')['isShallow']>
|
||||||
readonly makeDestructurable: UnwrapRef<typeof import('@vueuse/core')['makeDestructurable']>
|
readonly makeDestructurable: UnwrapRef<typeof import('@vueuse/core')['makeDestructurable']>
|
||||||
readonly markRaw: UnwrapRef<typeof import('vue')['markRaw']>
|
readonly markRaw: UnwrapRef<typeof import('vue')['markRaw']>
|
||||||
readonly nextTick: UnwrapRef<typeof import('vue')['nextTick']>
|
readonly nextTick: UnwrapRef<typeof import('vue')['nextTick']>
|
||||||
@@ -346,6 +379,7 @@ declare module 'vue' {
|
|||||||
readonly onBeforeUpdate: UnwrapRef<typeof import('vue')['onBeforeUpdate']>
|
readonly onBeforeUpdate: UnwrapRef<typeof import('vue')['onBeforeUpdate']>
|
||||||
readonly onClickOutside: UnwrapRef<typeof import('@vueuse/core')['onClickOutside']>
|
readonly onClickOutside: UnwrapRef<typeof import('@vueuse/core')['onClickOutside']>
|
||||||
readonly onDeactivated: UnwrapRef<typeof import('vue')['onDeactivated']>
|
readonly onDeactivated: UnwrapRef<typeof import('vue')['onDeactivated']>
|
||||||
|
readonly onElementRemoval: UnwrapRef<typeof import('@vueuse/core')['onElementRemoval']>
|
||||||
readonly onErrorCaptured: UnwrapRef<typeof import('vue')['onErrorCaptured']>
|
readonly onErrorCaptured: UnwrapRef<typeof import('vue')['onErrorCaptured']>
|
||||||
readonly onKeyStroke: UnwrapRef<typeof import('@vueuse/core')['onKeyStroke']>
|
readonly onKeyStroke: UnwrapRef<typeof import('@vueuse/core')['onKeyStroke']>
|
||||||
readonly onLongPress: UnwrapRef<typeof import('@vueuse/core')['onLongPress']>
|
readonly onLongPress: UnwrapRef<typeof import('@vueuse/core')['onLongPress']>
|
||||||
@@ -357,9 +391,11 @@ declare module 'vue' {
|
|||||||
readonly onStartTyping: UnwrapRef<typeof import('@vueuse/core')['onStartTyping']>
|
readonly onStartTyping: UnwrapRef<typeof import('@vueuse/core')['onStartTyping']>
|
||||||
readonly onUnmounted: UnwrapRef<typeof import('vue')['onUnmounted']>
|
readonly onUnmounted: UnwrapRef<typeof import('vue')['onUnmounted']>
|
||||||
readonly onUpdated: UnwrapRef<typeof import('vue')['onUpdated']>
|
readonly onUpdated: UnwrapRef<typeof import('vue')['onUpdated']>
|
||||||
|
readonly onWatcherCleanup: UnwrapRef<typeof import('vue')['onWatcherCleanup']>
|
||||||
readonly pausableWatch: UnwrapRef<typeof import('@vueuse/core')['pausableWatch']>
|
readonly pausableWatch: UnwrapRef<typeof import('@vueuse/core')['pausableWatch']>
|
||||||
readonly preferredDark: UnwrapRef<typeof import('./composables/dark')['preferredDark']>
|
readonly preferredDark: UnwrapRef<typeof import('./composables/dark')['preferredDark']>
|
||||||
readonly provide: UnwrapRef<typeof import('vue')['provide']>
|
readonly provide: UnwrapRef<typeof import('vue')['provide']>
|
||||||
|
readonly provideLocal: UnwrapRef<typeof import('@vueuse/core')['provideLocal']>
|
||||||
readonly reactify: UnwrapRef<typeof import('@vueuse/core')['reactify']>
|
readonly reactify: UnwrapRef<typeof import('@vueuse/core')['reactify']>
|
||||||
readonly reactifyObject: UnwrapRef<typeof import('@vueuse/core')['reactifyObject']>
|
readonly reactifyObject: UnwrapRef<typeof import('@vueuse/core')['reactifyObject']>
|
||||||
readonly reactive: UnwrapRef<typeof import('vue')['reactive']>
|
readonly reactive: UnwrapRef<typeof import('vue')['reactive']>
|
||||||
@@ -371,11 +407,11 @@ declare module 'vue' {
|
|||||||
readonly refAutoReset: UnwrapRef<typeof import('@vueuse/core')['refAutoReset']>
|
readonly refAutoReset: UnwrapRef<typeof import('@vueuse/core')['refAutoReset']>
|
||||||
readonly refDebounced: UnwrapRef<typeof import('@vueuse/core')['refDebounced']>
|
readonly refDebounced: UnwrapRef<typeof import('@vueuse/core')['refDebounced']>
|
||||||
readonly refDefault: UnwrapRef<typeof import('@vueuse/core')['refDefault']>
|
readonly refDefault: UnwrapRef<typeof import('@vueuse/core')['refDefault']>
|
||||||
|
readonly refManualReset: UnwrapRef<typeof import('@vueuse/core')['refManualReset']>
|
||||||
readonly refThrottled: UnwrapRef<typeof import('@vueuse/core')['refThrottled']>
|
readonly refThrottled: UnwrapRef<typeof import('@vueuse/core')['refThrottled']>
|
||||||
readonly refWithControl: UnwrapRef<typeof import('@vueuse/core')['refWithControl']>
|
readonly refWithControl: UnwrapRef<typeof import('@vueuse/core')['refWithControl']>
|
||||||
readonly resolveComponent: UnwrapRef<typeof import('vue')['resolveComponent']>
|
readonly resolveComponent: UnwrapRef<typeof import('vue')['resolveComponent']>
|
||||||
readonly resolveRef: UnwrapRef<typeof import('@vueuse/core')['resolveRef']>
|
readonly resolveRef: UnwrapRef<typeof import('@vueuse/core')['resolveRef']>
|
||||||
readonly resolveUnref: UnwrapRef<typeof import('@vueuse/core')['resolveUnref']>
|
|
||||||
readonly shallowReactive: UnwrapRef<typeof import('vue')['shallowReactive']>
|
readonly shallowReactive: UnwrapRef<typeof import('vue')['shallowReactive']>
|
||||||
readonly shallowReadonly: UnwrapRef<typeof import('vue')['shallowReadonly']>
|
readonly shallowReadonly: UnwrapRef<typeof import('vue')['shallowReadonly']>
|
||||||
readonly shallowRef: UnwrapRef<typeof import('vue')['shallowRef']>
|
readonly shallowRef: UnwrapRef<typeof import('vue')['shallowRef']>
|
||||||
@@ -388,6 +424,7 @@ declare module 'vue' {
|
|||||||
readonly toReactive: UnwrapRef<typeof import('@vueuse/core')['toReactive']>
|
readonly toReactive: UnwrapRef<typeof import('@vueuse/core')['toReactive']>
|
||||||
readonly toRef: UnwrapRef<typeof import('vue')['toRef']>
|
readonly toRef: UnwrapRef<typeof import('vue')['toRef']>
|
||||||
readonly toRefs: UnwrapRef<typeof import('vue')['toRefs']>
|
readonly toRefs: UnwrapRef<typeof import('vue')['toRefs']>
|
||||||
|
readonly toValue: UnwrapRef<typeof import('vue')['toValue']>
|
||||||
readonly toggleDark: UnwrapRef<typeof import('./composables/dark')['toggleDark']>
|
readonly toggleDark: UnwrapRef<typeof import('./composables/dark')['toggleDark']>
|
||||||
readonly triggerRef: UnwrapRef<typeof import('vue')['triggerRef']>
|
readonly triggerRef: UnwrapRef<typeof import('vue')['triggerRef']>
|
||||||
readonly tryOnBeforeMount: UnwrapRef<typeof import('@vueuse/core')['tryOnBeforeMount']>
|
readonly tryOnBeforeMount: UnwrapRef<typeof import('@vueuse/core')['tryOnBeforeMount']>
|
||||||
@@ -399,11 +436,14 @@ declare module 'vue' {
|
|||||||
readonly unrefElement: UnwrapRef<typeof import('@vueuse/core')['unrefElement']>
|
readonly unrefElement: UnwrapRef<typeof import('@vueuse/core')['unrefElement']>
|
||||||
readonly until: UnwrapRef<typeof import('@vueuse/core')['until']>
|
readonly until: UnwrapRef<typeof import('@vueuse/core')['until']>
|
||||||
readonly useActiveElement: UnwrapRef<typeof import('@vueuse/core')['useActiveElement']>
|
readonly useActiveElement: UnwrapRef<typeof import('@vueuse/core')['useActiveElement']>
|
||||||
|
readonly useAnimate: UnwrapRef<typeof import('@vueuse/core')['useAnimate']>
|
||||||
|
readonly useArrayDifference: UnwrapRef<typeof import('@vueuse/core')['useArrayDifference']>
|
||||||
readonly useArrayEvery: UnwrapRef<typeof import('@vueuse/core')['useArrayEvery']>
|
readonly useArrayEvery: UnwrapRef<typeof import('@vueuse/core')['useArrayEvery']>
|
||||||
readonly useArrayFilter: UnwrapRef<typeof import('@vueuse/core')['useArrayFilter']>
|
readonly useArrayFilter: UnwrapRef<typeof import('@vueuse/core')['useArrayFilter']>
|
||||||
readonly useArrayFind: UnwrapRef<typeof import('@vueuse/core')['useArrayFind']>
|
readonly useArrayFind: UnwrapRef<typeof import('@vueuse/core')['useArrayFind']>
|
||||||
readonly useArrayFindIndex: UnwrapRef<typeof import('@vueuse/core')['useArrayFindIndex']>
|
readonly useArrayFindIndex: UnwrapRef<typeof import('@vueuse/core')['useArrayFindIndex']>
|
||||||
readonly useArrayFindLast: UnwrapRef<typeof import('@vueuse/core')['useArrayFindLast']>
|
readonly useArrayFindLast: UnwrapRef<typeof import('@vueuse/core')['useArrayFindLast']>
|
||||||
|
readonly useArrayIncludes: UnwrapRef<typeof import('@vueuse/core')['useArrayIncludes']>
|
||||||
readonly useArrayJoin: UnwrapRef<typeof import('@vueuse/core')['useArrayJoin']>
|
readonly useArrayJoin: UnwrapRef<typeof import('@vueuse/core')['useArrayJoin']>
|
||||||
readonly useArrayMap: UnwrapRef<typeof import('@vueuse/core')['useArrayMap']>
|
readonly useArrayMap: UnwrapRef<typeof import('@vueuse/core')['useArrayMap']>
|
||||||
readonly useArrayReduce: UnwrapRef<typeof import('@vueuse/core')['useArrayReduce']>
|
readonly useArrayReduce: UnwrapRef<typeof import('@vueuse/core')['useArrayReduce']>
|
||||||
@@ -420,11 +460,14 @@ declare module 'vue' {
|
|||||||
readonly useBrowserLocation: UnwrapRef<typeof import('@vueuse/core')['useBrowserLocation']>
|
readonly useBrowserLocation: UnwrapRef<typeof import('@vueuse/core')['useBrowserLocation']>
|
||||||
readonly useCached: UnwrapRef<typeof import('@vueuse/core')['useCached']>
|
readonly useCached: UnwrapRef<typeof import('@vueuse/core')['useCached']>
|
||||||
readonly useClipboard: UnwrapRef<typeof import('@vueuse/core')['useClipboard']>
|
readonly useClipboard: UnwrapRef<typeof import('@vueuse/core')['useClipboard']>
|
||||||
|
readonly useClipboardItems: UnwrapRef<typeof import('@vueuse/core')['useClipboardItems']>
|
||||||
readonly useCloned: UnwrapRef<typeof import('@vueuse/core')['useCloned']>
|
readonly useCloned: UnwrapRef<typeof import('@vueuse/core')['useCloned']>
|
||||||
readonly useColorMode: UnwrapRef<typeof import('@vueuse/core')['useColorMode']>
|
readonly useColorMode: UnwrapRef<typeof import('@vueuse/core')['useColorMode']>
|
||||||
readonly useConfirmDialog: UnwrapRef<typeof import('@vueuse/core')['useConfirmDialog']>
|
readonly useConfirmDialog: UnwrapRef<typeof import('@vueuse/core')['useConfirmDialog']>
|
||||||
|
readonly useCountdown: UnwrapRef<typeof import('@vueuse/core')['useCountdown']>
|
||||||
readonly useCounter: UnwrapRef<typeof import('@vueuse/core')['useCounter']>
|
readonly useCounter: UnwrapRef<typeof import('@vueuse/core')['useCounter']>
|
||||||
readonly useCssModule: UnwrapRef<typeof import('vue')['useCssModule']>
|
readonly useCssModule: UnwrapRef<typeof import('vue')['useCssModule']>
|
||||||
|
readonly useCssSupports: UnwrapRef<typeof import('@vueuse/core')['useCssSupports']>
|
||||||
readonly useCssVar: UnwrapRef<typeof import('@vueuse/core')['useCssVar']>
|
readonly useCssVar: UnwrapRef<typeof import('@vueuse/core')['useCssVar']>
|
||||||
readonly useCssVars: UnwrapRef<typeof import('vue')['useCssVars']>
|
readonly useCssVars: UnwrapRef<typeof import('vue')['useCssVars']>
|
||||||
readonly useCurrentElement: UnwrapRef<typeof import('@vueuse/core')['useCurrentElement']>
|
readonly useCurrentElement: UnwrapRef<typeof import('@vueuse/core')['useCurrentElement']>
|
||||||
@@ -461,8 +504,10 @@ declare module 'vue' {
|
|||||||
readonly useFullscreen: UnwrapRef<typeof import('@vueuse/core')['useFullscreen']>
|
readonly useFullscreen: UnwrapRef<typeof import('@vueuse/core')['useFullscreen']>
|
||||||
readonly useGamepad: UnwrapRef<typeof import('@vueuse/core')['useGamepad']>
|
readonly useGamepad: UnwrapRef<typeof import('@vueuse/core')['useGamepad']>
|
||||||
readonly useGeolocation: UnwrapRef<typeof import('@vueuse/core')['useGeolocation']>
|
readonly useGeolocation: UnwrapRef<typeof import('@vueuse/core')['useGeolocation']>
|
||||||
readonly useHead: UnwrapRef<typeof import('@vueuse/head')['useHead']>
|
readonly useHead: UnwrapRef<typeof import('@unhead/vue')['useHead']>
|
||||||
|
readonly useHeadSafe: UnwrapRef<typeof import('@unhead/vue')['useHeadSafe']>
|
||||||
readonly useI18n: UnwrapRef<typeof import('vue-i18n')['useI18n']>
|
readonly useI18n: UnwrapRef<typeof import('vue-i18n')['useI18n']>
|
||||||
|
readonly useId: UnwrapRef<typeof import('vue')['useId']>
|
||||||
readonly useIdle: UnwrapRef<typeof import('@vueuse/core')['useIdle']>
|
readonly useIdle: UnwrapRef<typeof import('@vueuse/core')['useIdle']>
|
||||||
readonly useImage: UnwrapRef<typeof import('@vueuse/core')['useImage']>
|
readonly useImage: UnwrapRef<typeof import('@vueuse/core')['useImage']>
|
||||||
readonly useInfiniteScroll: UnwrapRef<typeof import('@vueuse/core')['useInfiniteScroll']>
|
readonly useInfiniteScroll: UnwrapRef<typeof import('@vueuse/core')['useInfiniteScroll']>
|
||||||
@@ -471,7 +516,7 @@ declare module 'vue' {
|
|||||||
readonly useIntervalFn: UnwrapRef<typeof import('@vueuse/core')['useIntervalFn']>
|
readonly useIntervalFn: UnwrapRef<typeof import('@vueuse/core')['useIntervalFn']>
|
||||||
readonly useKeyModifier: UnwrapRef<typeof import('@vueuse/core')['useKeyModifier']>
|
readonly useKeyModifier: UnwrapRef<typeof import('@vueuse/core')['useKeyModifier']>
|
||||||
readonly useLastChanged: UnwrapRef<typeof import('@vueuse/core')['useLastChanged']>
|
readonly useLastChanged: UnwrapRef<typeof import('@vueuse/core')['useLastChanged']>
|
||||||
readonly useLink: UnwrapRef<typeof import('vue-router')['useLink']>
|
readonly useLink: UnwrapRef<typeof import('vue-router/auto')['useLink']>
|
||||||
readonly useLocalStorage: UnwrapRef<typeof import('@vueuse/core')['useLocalStorage']>
|
readonly useLocalStorage: UnwrapRef<typeof import('@vueuse/core')['useLocalStorage']>
|
||||||
readonly useMagicKeys: UnwrapRef<typeof import('@vueuse/core')['useMagicKeys']>
|
readonly useMagicKeys: UnwrapRef<typeof import('@vueuse/core')['useMagicKeys']>
|
||||||
readonly useManualRefHistory: UnwrapRef<typeof import('@vueuse/core')['useManualRefHistory']>
|
readonly useManualRefHistory: UnwrapRef<typeof import('@vueuse/core')['useManualRefHistory']>
|
||||||
@@ -479,6 +524,7 @@ declare module 'vue' {
|
|||||||
readonly useMediaQuery: UnwrapRef<typeof import('@vueuse/core')['useMediaQuery']>
|
readonly useMediaQuery: UnwrapRef<typeof import('@vueuse/core')['useMediaQuery']>
|
||||||
readonly useMemoize: UnwrapRef<typeof import('@vueuse/core')['useMemoize']>
|
readonly useMemoize: UnwrapRef<typeof import('@vueuse/core')['useMemoize']>
|
||||||
readonly useMemory: UnwrapRef<typeof import('@vueuse/core')['useMemory']>
|
readonly useMemory: UnwrapRef<typeof import('@vueuse/core')['useMemory']>
|
||||||
|
readonly useModel: UnwrapRef<typeof import('vue')['useModel']>
|
||||||
readonly useMounted: UnwrapRef<typeof import('@vueuse/core')['useMounted']>
|
readonly useMounted: UnwrapRef<typeof import('@vueuse/core')['useMounted']>
|
||||||
readonly useMouse: UnwrapRef<typeof import('@vueuse/core')['useMouse']>
|
readonly useMouse: UnwrapRef<typeof import('@vueuse/core')['useMouse']>
|
||||||
readonly useMouseInElement: UnwrapRef<typeof import('@vueuse/core')['useMouseInElement']>
|
readonly useMouseInElement: UnwrapRef<typeof import('@vueuse/core')['useMouseInElement']>
|
||||||
@@ -492,6 +538,8 @@ declare module 'vue' {
|
|||||||
readonly useOnline: UnwrapRef<typeof import('@vueuse/core')['useOnline']>
|
readonly useOnline: UnwrapRef<typeof import('@vueuse/core')['useOnline']>
|
||||||
readonly usePageLeave: UnwrapRef<typeof import('@vueuse/core')['usePageLeave']>
|
readonly usePageLeave: UnwrapRef<typeof import('@vueuse/core')['usePageLeave']>
|
||||||
readonly useParallax: UnwrapRef<typeof import('@vueuse/core')['useParallax']>
|
readonly useParallax: UnwrapRef<typeof import('@vueuse/core')['useParallax']>
|
||||||
|
readonly useParentElement: UnwrapRef<typeof import('@vueuse/core')['useParentElement']>
|
||||||
|
readonly usePerformanceObserver: UnwrapRef<typeof import('@vueuse/core')['usePerformanceObserver']>
|
||||||
readonly usePermission: UnwrapRef<typeof import('@vueuse/core')['usePermission']>
|
readonly usePermission: UnwrapRef<typeof import('@vueuse/core')['usePermission']>
|
||||||
readonly usePointer: UnwrapRef<typeof import('@vueuse/core')['usePointer']>
|
readonly usePointer: UnwrapRef<typeof import('@vueuse/core')['usePointer']>
|
||||||
readonly usePointerLock: UnwrapRef<typeof import('@vueuse/core')['usePointerLock']>
|
readonly usePointerLock: UnwrapRef<typeof import('@vueuse/core')['usePointerLock']>
|
||||||
@@ -501,17 +549,23 @@ declare module 'vue' {
|
|||||||
readonly usePreferredDark: UnwrapRef<typeof import('@vueuse/core')['usePreferredDark']>
|
readonly usePreferredDark: UnwrapRef<typeof import('@vueuse/core')['usePreferredDark']>
|
||||||
readonly usePreferredLanguages: UnwrapRef<typeof import('@vueuse/core')['usePreferredLanguages']>
|
readonly usePreferredLanguages: UnwrapRef<typeof import('@vueuse/core')['usePreferredLanguages']>
|
||||||
readonly usePreferredReducedMotion: UnwrapRef<typeof import('@vueuse/core')['usePreferredReducedMotion']>
|
readonly usePreferredReducedMotion: UnwrapRef<typeof import('@vueuse/core')['usePreferredReducedMotion']>
|
||||||
|
readonly usePreferredReducedTransparency: UnwrapRef<typeof import('@vueuse/core')['usePreferredReducedTransparency']>
|
||||||
readonly usePrevious: UnwrapRef<typeof import('@vueuse/core')['usePrevious']>
|
readonly usePrevious: UnwrapRef<typeof import('@vueuse/core')['usePrevious']>
|
||||||
readonly useRafFn: UnwrapRef<typeof import('@vueuse/core')['useRafFn']>
|
readonly useRafFn: UnwrapRef<typeof import('@vueuse/core')['useRafFn']>
|
||||||
readonly useRefHistory: UnwrapRef<typeof import('@vueuse/core')['useRefHistory']>
|
readonly useRefHistory: UnwrapRef<typeof import('@vueuse/core')['useRefHistory']>
|
||||||
readonly useResizeObserver: UnwrapRef<typeof import('@vueuse/core')['useResizeObserver']>
|
readonly useResizeObserver: UnwrapRef<typeof import('@vueuse/core')['useResizeObserver']>
|
||||||
readonly useRoute: UnwrapRef<typeof import('vue-router')['useRoute']>
|
readonly useRoute: UnwrapRef<typeof import('vue-router')['useRoute']>
|
||||||
readonly useRouter: UnwrapRef<typeof import('vue-router')['useRouter']>
|
readonly useRouter: UnwrapRef<typeof import('vue-router')['useRouter']>
|
||||||
|
readonly useSSRWidth: UnwrapRef<typeof import('@vueuse/core')['useSSRWidth']>
|
||||||
readonly useScreenOrientation: UnwrapRef<typeof import('@vueuse/core')['useScreenOrientation']>
|
readonly useScreenOrientation: UnwrapRef<typeof import('@vueuse/core')['useScreenOrientation']>
|
||||||
readonly useScreenSafeArea: UnwrapRef<typeof import('@vueuse/core')['useScreenSafeArea']>
|
readonly useScreenSafeArea: UnwrapRef<typeof import('@vueuse/core')['useScreenSafeArea']>
|
||||||
readonly useScriptTag: UnwrapRef<typeof import('@vueuse/core')['useScriptTag']>
|
readonly useScriptTag: UnwrapRef<typeof import('@vueuse/core')['useScriptTag']>
|
||||||
readonly useScroll: UnwrapRef<typeof import('@vueuse/core')['useScroll']>
|
readonly useScroll: UnwrapRef<typeof import('@vueuse/core')['useScroll']>
|
||||||
readonly useScrollLock: UnwrapRef<typeof import('@vueuse/core')['useScrollLock']>
|
readonly useScrollLock: UnwrapRef<typeof import('@vueuse/core')['useScrollLock']>
|
||||||
|
readonly useSeoMeta: UnwrapRef<typeof import('@unhead/vue')['useSeoMeta']>
|
||||||
|
readonly useServerHead: UnwrapRef<typeof import('@unhead/vue')['useServerHead']>
|
||||||
|
readonly useServerHeadSafe: UnwrapRef<typeof import('@unhead/vue')['useServerHeadSafe']>
|
||||||
|
readonly useServerSeoMeta: UnwrapRef<typeof import('@unhead/vue')['useServerSeoMeta']>
|
||||||
readonly useSessionStorage: UnwrapRef<typeof import('@vueuse/core')['useSessionStorage']>
|
readonly useSessionStorage: UnwrapRef<typeof import('@vueuse/core')['useSessionStorage']>
|
||||||
readonly useShare: UnwrapRef<typeof import('@vueuse/core')['useShare']>
|
readonly useShare: UnwrapRef<typeof import('@vueuse/core')['useShare']>
|
||||||
readonly useSlots: UnwrapRef<typeof import('vue')['useSlots']>
|
readonly useSlots: UnwrapRef<typeof import('vue')['useSlots']>
|
||||||
@@ -524,6 +578,7 @@ declare module 'vue' {
|
|||||||
readonly useStyleTag: UnwrapRef<typeof import('@vueuse/core')['useStyleTag']>
|
readonly useStyleTag: UnwrapRef<typeof import('@vueuse/core')['useStyleTag']>
|
||||||
readonly useSupported: UnwrapRef<typeof import('@vueuse/core')['useSupported']>
|
readonly useSupported: UnwrapRef<typeof import('@vueuse/core')['useSupported']>
|
||||||
readonly useSwipe: UnwrapRef<typeof import('@vueuse/core')['useSwipe']>
|
readonly useSwipe: UnwrapRef<typeof import('@vueuse/core')['useSwipe']>
|
||||||
|
readonly useTemplateRef: UnwrapRef<typeof import('vue')['useTemplateRef']>
|
||||||
readonly useTemplateRefsList: UnwrapRef<typeof import('@vueuse/core')['useTemplateRefsList']>
|
readonly useTemplateRefsList: UnwrapRef<typeof import('@vueuse/core')['useTemplateRefsList']>
|
||||||
readonly useTextDirection: UnwrapRef<typeof import('@vueuse/core')['useTextDirection']>
|
readonly useTextDirection: UnwrapRef<typeof import('@vueuse/core')['useTextDirection']>
|
||||||
readonly useTextSelection: UnwrapRef<typeof import('@vueuse/core')['useTextSelection']>
|
readonly useTextSelection: UnwrapRef<typeof import('@vueuse/core')['useTextSelection']>
|
||||||
@@ -532,6 +587,7 @@ declare module 'vue' {
|
|||||||
readonly useThrottleFn: UnwrapRef<typeof import('@vueuse/core')['useThrottleFn']>
|
readonly useThrottleFn: UnwrapRef<typeof import('@vueuse/core')['useThrottleFn']>
|
||||||
readonly useThrottledRefHistory: UnwrapRef<typeof import('@vueuse/core')['useThrottledRefHistory']>
|
readonly useThrottledRefHistory: UnwrapRef<typeof import('@vueuse/core')['useThrottledRefHistory']>
|
||||||
readonly useTimeAgo: UnwrapRef<typeof import('@vueuse/core')['useTimeAgo']>
|
readonly useTimeAgo: UnwrapRef<typeof import('@vueuse/core')['useTimeAgo']>
|
||||||
|
readonly useTimeAgoIntl: UnwrapRef<typeof import('@vueuse/core')['useTimeAgoIntl']>
|
||||||
readonly useTimeout: UnwrapRef<typeof import('@vueuse/core')['useTimeout']>
|
readonly useTimeout: UnwrapRef<typeof import('@vueuse/core')['useTimeout']>
|
||||||
readonly useTimeoutFn: UnwrapRef<typeof import('@vueuse/core')['useTimeoutFn']>
|
readonly useTimeoutFn: UnwrapRef<typeof import('@vueuse/core')['useTimeoutFn']>
|
||||||
readonly useTimeoutPoll: UnwrapRef<typeof import('@vueuse/core')['useTimeoutPoll']>
|
readonly useTimeoutPoll: UnwrapRef<typeof import('@vueuse/core')['useTimeoutPoll']>
|
||||||
@@ -560,8 +616,10 @@ declare module 'vue' {
|
|||||||
readonly watchArray: UnwrapRef<typeof import('@vueuse/core')['watchArray']>
|
readonly watchArray: UnwrapRef<typeof import('@vueuse/core')['watchArray']>
|
||||||
readonly watchAtMost: UnwrapRef<typeof import('@vueuse/core')['watchAtMost']>
|
readonly watchAtMost: UnwrapRef<typeof import('@vueuse/core')['watchAtMost']>
|
||||||
readonly watchDebounced: UnwrapRef<typeof import('@vueuse/core')['watchDebounced']>
|
readonly watchDebounced: UnwrapRef<typeof import('@vueuse/core')['watchDebounced']>
|
||||||
|
readonly watchDeep: UnwrapRef<typeof import('@vueuse/core')['watchDeep']>
|
||||||
readonly watchEffect: UnwrapRef<typeof import('vue')['watchEffect']>
|
readonly watchEffect: UnwrapRef<typeof import('vue')['watchEffect']>
|
||||||
readonly watchIgnorable: UnwrapRef<typeof import('@vueuse/core')['watchIgnorable']>
|
readonly watchIgnorable: UnwrapRef<typeof import('@vueuse/core')['watchIgnorable']>
|
||||||
|
readonly watchImmediate: UnwrapRef<typeof import('@vueuse/core')['watchImmediate']>
|
||||||
readonly watchOnce: UnwrapRef<typeof import('@vueuse/core')['watchOnce']>
|
readonly watchOnce: UnwrapRef<typeof import('@vueuse/core')['watchOnce']>
|
||||||
readonly watchPausable: UnwrapRef<typeof import('@vueuse/core')['watchPausable']>
|
readonly watchPausable: UnwrapRef<typeof import('@vueuse/core')['watchPausable']>
|
||||||
readonly watchPostEffect: UnwrapRef<typeof import('vue')['watchPostEffect']>
|
readonly watchPostEffect: UnwrapRef<typeof import('vue')['watchPostEffect']>
|
||||||
@@ -571,4 +629,4 @@ declare module 'vue' {
|
|||||||
readonly watchWithFilter: UnwrapRef<typeof import('@vueuse/core')['watchWithFilter']>
|
readonly watchWithFilter: UnwrapRef<typeof import('@vueuse/core')['watchWithFilter']>
|
||||||
readonly whenever: UnwrapRef<typeof import('@vueuse/core')['whenever']>
|
readonly whenever: UnwrapRef<typeof import('@vueuse/core')['whenever']>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Vendored
+5
-3
@@ -1,13 +1,15 @@
|
|||||||
/* eslint-disable */
|
/* eslint-disable */
|
||||||
/* prettier-ignore */
|
|
||||||
// @ts-nocheck
|
// @ts-nocheck
|
||||||
|
// biome-ignore lint: disable
|
||||||
|
// oxlint-disable
|
||||||
|
// ------
|
||||||
// Generated by unplugin-vue-components
|
// Generated by unplugin-vue-components
|
||||||
// Read more: https://github.com/vuejs/core/pull/3399
|
// Read more: https://github.com/vuejs/core/pull/3399
|
||||||
import '@vue/runtime-core'
|
|
||||||
|
|
||||||
export {}
|
export {}
|
||||||
|
|
||||||
declare module '@vue/runtime-core' {
|
/* prettier-ignore */
|
||||||
|
declare module 'vue' {
|
||||||
export interface GlobalComponents {
|
export interface GlobalComponents {
|
||||||
README: typeof import('./components/README.md')['default']
|
README: typeof import('./components/README.md')['default']
|
||||||
RouterLink: typeof import('vue-router')['RouterLink']
|
RouterLink: typeof import('vue-router')['RouterLink']
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
Components in this dir will be auto-registered and on-demand, powered by [`unplugin-vue-components`](https://github.com/antfu/unplugin-vue-components).
|
Components in this dir will be auto-registered and on-demand, powered by [`unplugin-vue-components`](https://github.com/antfu/unplugin-vue-components).
|
||||||
|
|
||||||
|
|
||||||
### Icons
|
### Icons
|
||||||
|
|
||||||
You can use icons from almost any icon sets by the power of [Iconify](https://iconify.design/).
|
You can use icons from almost any icon sets by the power of [Iconify](https://iconify.design/).
|
||||||
|
|||||||
@@ -13,24 +13,24 @@ async function toggleLocales() {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<nav text-xl mt-6>
|
<nav flex="~ gap-4" mt-6 justify-center text-xl>
|
||||||
<RouterLink class="icon-btn mx-2" to="/">
|
<RouterLink icon-btn to="/" :title="t('button.home')">
|
||||||
<div i-carbon-campsite :title="t('button.home')" />
|
<div i-carbon-campsite />
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
|
|
||||||
<button class="icon-btn mx-2 !outline-none" :title="t('button.toggle_dark')" @click="toggleDark()">
|
<button icon-btn :title="t('button.toggle_dark')" @click="toggleDark()">
|
||||||
<div i="carbon-sun dark:carbon-moon" />
|
<div i="carbon-sun dark:carbon-moon" />
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<a class="icon-btn mx-2" :title="t('button.toggle_langs')" @click="toggleLocales()">
|
<a icon-btn :title="t('button.toggle_langs')" @click="toggleLocales()">
|
||||||
<div i-carbon-language />
|
<div i-carbon-language />
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<RouterLink class="icon-btn mx-2" to="/about">
|
<RouterLink icon-btn to="/about" :title="t('button.about')" data-test-id="about">
|
||||||
<div i-carbon-dicom-overlay :title="t('button.about')" />
|
<div i-carbon-dicom-overlay />
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
|
|
||||||
<a class="icon-btn mx-2" rel="noreferrer" href="https://github.com/antfu/vitesse" target="_blank" title="GitHub">
|
<a icon-btn rel="noreferrer" href="https://github.com/antfu/vitesse" target="_blank" title="GitHub">
|
||||||
<div i-carbon-logo-github />
|
<div i-carbon-logo-github />
|
||||||
</a>
|
</a>
|
||||||
</nav>
|
</nav>
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ const { modelValue } = defineModels<{
|
|||||||
<input
|
<input
|
||||||
id="input"
|
id="input"
|
||||||
v-model="modelValue"
|
v-model="modelValue"
|
||||||
type="text"
|
|
||||||
v-bind="$attrs"
|
v-bind="$attrs"
|
||||||
|
type="text"
|
||||||
p="x-4 y-2"
|
p="x-4 y-2"
|
||||||
w="250px"
|
w="250px"
|
||||||
text="center"
|
text="center"
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
|
useHead({
|
||||||
|
title: () => t('not-found'),
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ Vue components in this dir are used as layouts.
|
|||||||
|
|
||||||
By default, `default.vue` will be used unless an alternative is specified in the route meta.
|
By default, `default.vue` will be used unless an alternative is specified in the route meta.
|
||||||
|
|
||||||
With [`vite-plugin-pages`](https://github.com/hannoeru/vite-plugin-pages) and [`vite-plugin-vue-layouts`](https://github.com/JohnCampionJr/vite-plugin-vue-layouts), you can specify the layout in the page's SFCs like this:
|
With [`unplugin-vue-router`](https://github.com/posva/unplugin-vue-router) and [`vite-plugin-vue-layouts`](https://github.com/JohnCampionJr/vite-plugin-vue-layouts), you can specify the layout in the page's SFCs like this:
|
||||||
|
|
||||||
```html
|
```vue
|
||||||
<route lang="yaml">
|
<route lang="yaml">
|
||||||
meta:
|
meta:
|
||||||
layout: home
|
layout: home
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<main class="px-4 py-10 text-center text-gray-700 dark:text-gray-200">
|
<main
|
||||||
|
px-4 py-10
|
||||||
|
text="center gray-700 dark:gray-200"
|
||||||
|
>
|
||||||
<RouterView />
|
<RouterView />
|
||||||
<TheFooter />
|
<TheFooter />
|
||||||
<div class="mt-5 mx-auto text-center opacity-75 dark:opacity-50 text-sm">
|
<div mx-auto mt-5 text-center text-sm opacity-50>
|
||||||
[Default Layout]
|
[Default Layout]
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<main class="px-4 py-10 text-center text-gray-700 dark:text-gray-200">
|
<main
|
||||||
|
px-4 py-10
|
||||||
|
text="center gray-700 dark:gray-200"
|
||||||
|
>
|
||||||
<RouterView />
|
<RouterView />
|
||||||
<TheFooter />
|
<TheFooter />
|
||||||
<div class="mt-5 mx-auto text-center opacity-75 dark:opacity-50 text-sm">
|
<div mx-auto mt-5 text-center text-sm opacity-50>
|
||||||
[Home Layout]
|
[Home Layout]
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
|
|||||||
+9
-8
@@ -1,20 +1,21 @@
|
|||||||
import { ViteSSG } from 'vite-ssg'
|
|
||||||
import { setupLayouts } from 'virtual:generated-layouts'
|
|
||||||
// import Previewer from 'virtual:vue-component-preview'
|
|
||||||
import App from './App.vue'
|
|
||||||
import type { UserModule } from './types'
|
import type { UserModule } from './types'
|
||||||
import generatedRoutes from '~pages'
|
|
||||||
|
import { setupLayouts } from 'virtual:generated-layouts'
|
||||||
|
import { ViteSSG } from 'vite-ssg'
|
||||||
|
import { routes } from 'vue-router/auto-routes'
|
||||||
|
import App from './App.vue'
|
||||||
|
|
||||||
import '@unocss/reset/tailwind.css'
|
import '@unocss/reset/tailwind.css'
|
||||||
import './styles/main.css'
|
import './styles/main.css'
|
||||||
import 'uno.css'
|
import 'uno.css'
|
||||||
|
|
||||||
const routes = setupLayouts(generatedRoutes)
|
|
||||||
|
|
||||||
// https://github.com/antfu/vite-ssg
|
// https://github.com/antfu/vite-ssg
|
||||||
export const createApp = ViteSSG(
|
export const createApp = ViteSSG(
|
||||||
App,
|
App,
|
||||||
{ routes, base: import.meta.env.BASE_URL },
|
{
|
||||||
|
routes: setupLayouts([...routes]),
|
||||||
|
base: import.meta.env.BASE_URL,
|
||||||
|
},
|
||||||
(ctx) => {
|
(ctx) => {
|
||||||
// install all modules under `modules/`
|
// install all modules under `modules/`
|
||||||
Object.values(import.meta.glob<{ install: UserModule }>('./modules/*.ts', { eager: true }))
|
Object.values(import.meta.glob<{ install: UserModule }>('./modules/*.ts', { eager: true }))
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
A custom user module system. Place a `.ts` file with the following template, it will be installed automatically.
|
A custom user module system. Place a `.ts` file with the following template, it will be installed automatically.
|
||||||
|
|
||||||
```ts
|
```ts
|
||||||
import { type UserModule } from '~/types'
|
import type { UserModule } from '~/types'
|
||||||
|
|
||||||
export const install: UserModule = ({ app, router, isClient }) => {
|
export const install: UserModule = ({ app, router, isClient }) => {
|
||||||
// do something
|
// do something
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
import type { Locale } from 'vue-i18n'
|
import type { Locale } from 'vue-i18n'
|
||||||
|
import type { UserModule } from '~/types'
|
||||||
import { createI18n } from 'vue-i18n'
|
import { createI18n } from 'vue-i18n'
|
||||||
import { type UserModule } from '~/types'
|
|
||||||
|
|
||||||
// Import i18n resources
|
// Import i18n resources
|
||||||
// https://vitejs.dev/guide/features.html#glob-import
|
// https://vitejs.dev/guide/features.html#glob-import
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
import type { UserModule } from '~/types'
|
||||||
import NProgress from 'nprogress'
|
import NProgress from 'nprogress'
|
||||||
import { type UserModule } from '~/types'
|
|
||||||
|
|
||||||
export const install: UserModule = ({ isClient, router }) => {
|
export const install: UserModule = ({ isClient, router }) => {
|
||||||
if (isClient) {
|
if (isClient) {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
import type { UserModule } from '~/types'
|
||||||
import { createPinia } from 'pinia'
|
import { createPinia } from 'pinia'
|
||||||
import { type UserModule } from '~/types'
|
|
||||||
|
|
||||||
// Setup Pinia
|
// Setup Pinia
|
||||||
// https://pinia.vuejs.org/
|
// https://pinia.vuejs.org/
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
import { type UserModule } from '~/types'
|
import type { UserModule } from '~/types'
|
||||||
|
|
||||||
// https://github.com/antfu/vite-plugin-pwa#automatic-reload-when-new-content-available
|
// https://github.com/antfu/vite-plugin-pwa#automatic-reload-when-new-content-available
|
||||||
export const install: UserModule = ({ isClient, router }) => {
|
export const install: UserModule = ({ isClient, router }) => {
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
## File-based Routing
|
## File-based Routing
|
||||||
|
|
||||||
Routes will be auto-generated for Vue files in this dir with the same file structure.
|
Routes will be auto-generated for Vue files in this dir with the same file structure.
|
||||||
Check out [`vite-plugin-pages`](https://github.com/hannoeru/vite-plugin-pages) for more details.
|
Check out [`unplugin-vue-router`](https://github.com/posva/unplugin-vue-router) for more details.
|
||||||
|
|
||||||
### Path Aliasing
|
### Path Aliasing
|
||||||
|
|
||||||
|
|||||||
+6
-1
@@ -2,10 +2,15 @@
|
|||||||
title: About
|
title: About
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
const { t } = useI18n()
|
||||||
|
useHead({ title: () => t('button.about') })
|
||||||
|
</script>
|
||||||
|
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<!-- You can use Vue components inside markdown -->
|
<!-- You can use Vue components inside markdown -->
|
||||||
<div i-carbon-dicom-overlay class="text-4xl -mb-6 m-auto" />
|
<div i-carbon-dicom-overlay class="text-4xl -mb-6 m-auto" />
|
||||||
<h3>About</h3>
|
<h3>{{ t('button.about') }}</h3>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
[Vitesse](https://github.com/antfu/vitesse) is an opinionated [Vite](https://github.com/vitejs/vite) starter template made by [@antfu](https://github.com/antfu) for mocking apps swiftly. With **file-based routing**, **components auto importing**, **markdown support**, I18n, PWA and uses **UnoCSS** for styling and icons.
|
[Vitesse](https://github.com/antfu/vitesse) is an opinionated [Vite](https://github.com/vitejs/vite) starter template made by [@antfu](https://github.com/antfu) for mocking apps swiftly. With **file-based routing**, **components auto importing**, **markdown support**, I18n, PWA and uses **UnoCSS** for styling and icons.
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
const props = defineProps<{ name: string }>()
|
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
|
const route = useRoute('/hi/[name]')
|
||||||
const user = useUserStore()
|
const user = useUserStore()
|
||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
|
|
||||||
watchEffect(() => {
|
watchEffect(() => {
|
||||||
user.setNewName(props.name)
|
user.setNewName(route.params.name)
|
||||||
|
})
|
||||||
|
useHead({
|
||||||
|
title: () => t('intro.hi', { name: user.savedName }),
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -15,7 +18,7 @@ watchEffect(() => {
|
|||||||
<div i-carbon-pedestrian inline-block />
|
<div i-carbon-pedestrian inline-block />
|
||||||
</div>
|
</div>
|
||||||
<p>
|
<p>
|
||||||
{{ t('intro.hi', { name: props.name }) }}
|
{{ t('intro.hi', { name: user.savedName }) }}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p text-sm opacity-75>
|
<p text-sm opacity-75>
|
||||||
@@ -23,7 +26,7 @@ watchEffect(() => {
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<template v-if="user.otherNames.length">
|
<template v-if="user.otherNames.length">
|
||||||
<p text-sm mt-4>
|
<div mt-4 text-sm>
|
||||||
<span opacity-75>{{ t('intro.aka') }}:</span>
|
<span opacity-75>{{ t('intro.aka') }}:</span>
|
||||||
<ul>
|
<ul>
|
||||||
<li v-for="otherName in user.otherNames" :key="otherName">
|
<li v-for="otherName in user.otherNames" :key="otherName">
|
||||||
@@ -32,12 +35,12 @@ watchEffect(() => {
|
|||||||
</RouterLink>
|
</RouterLink>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</p>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<button
|
<button
|
||||||
btn m="3 t6" text-sm
|
m="3 t6" btn text-sm
|
||||||
@click="router.back()"
|
@click="router.back()"
|
||||||
>
|
>
|
||||||
{{ t('button.back') }}
|
{{ t('button.back') }}
|
||||||
|
|||||||
+6
-3
@@ -7,11 +7,14 @@ const name = ref(user.savedName)
|
|||||||
|
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
function go() {
|
function go() {
|
||||||
if (name)
|
if (name.value)
|
||||||
router.push(`/hi/${encodeURIComponent(name.value)}`)
|
router.push(`/hi/${encodeURIComponent(name.value)}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
|
useHead({
|
||||||
|
title: () => t('button.home'),
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@@ -32,7 +35,7 @@ const { t } = useI18n()
|
|||||||
|
|
||||||
<TheInput
|
<TheInput
|
||||||
v-model="name"
|
v-model="name"
|
||||||
placeholder="What's your name?"
|
:placeholder="t('intro.whats-your-name')"
|
||||||
autocomplete="false"
|
autocomplete="false"
|
||||||
@keydown.enter="go"
|
@keydown.enter="go"
|
||||||
/>
|
/>
|
||||||
@@ -40,7 +43,7 @@ const { t } = useI18n()
|
|||||||
|
|
||||||
<div>
|
<div>
|
||||||
<button
|
<button
|
||||||
btn m-3 text-sm
|
m-3 btn text-sm
|
||||||
:disabled="!name"
|
:disabled="!name"
|
||||||
@click="go"
|
@click="go"
|
||||||
>
|
>
|
||||||
|
|||||||
Vendored
+121
@@ -0,0 +1,121 @@
|
|||||||
|
/* eslint-disable */
|
||||||
|
/* prettier-ignore */
|
||||||
|
// oxfmt-ignore
|
||||||
|
// @ts-nocheck
|
||||||
|
// noinspection ES6UnusedImports
|
||||||
|
// Generated by 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.
|
||||||
|
|
||||||
|
import type {
|
||||||
|
RouteRecordInfo,
|
||||||
|
ParamValue,
|
||||||
|
ParamValueOneOrMore,
|
||||||
|
ParamValueZeroOrMore,
|
||||||
|
ParamValueZeroOrOne,
|
||||||
|
} from 'vue-router'
|
||||||
|
|
||||||
|
declare module 'vue-router' {
|
||||||
|
interface TypesConfig {
|
||||||
|
ParamParsers: never
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
declare module 'vue-router/auto-routes' {
|
||||||
|
/**
|
||||||
|
* Route name map generated by vue-router
|
||||||
|
*/
|
||||||
|
export interface RouteNamedMap {
|
||||||
|
'/': RouteRecordInfo<
|
||||||
|
'/',
|
||||||
|
'/',
|
||||||
|
Record<never, never>,
|
||||||
|
Record<never, never>,
|
||||||
|
| never
|
||||||
|
>,
|
||||||
|
'/[...all]': RouteRecordInfo<
|
||||||
|
'/[...all]',
|
||||||
|
'/:all(.*)',
|
||||||
|
{ all: ParamValue<true> },
|
||||||
|
{ all: ParamValue<false> },
|
||||||
|
| never
|
||||||
|
>,
|
||||||
|
'/about': RouteRecordInfo<
|
||||||
|
'/about',
|
||||||
|
'/about',
|
||||||
|
Record<never, never>,
|
||||||
|
Record<never, never>,
|
||||||
|
| never
|
||||||
|
>,
|
||||||
|
'/hi/[name]': RouteRecordInfo<
|
||||||
|
'/hi/[name]',
|
||||||
|
'/hi/:name',
|
||||||
|
{ name: ParamValue<true> },
|
||||||
|
{ name: ParamValue<false> },
|
||||||
|
| never
|
||||||
|
>,
|
||||||
|
'/README': RouteRecordInfo<
|
||||||
|
'/README',
|
||||||
|
'/README',
|
||||||
|
Record<never, never>,
|
||||||
|
Record<never, never>,
|
||||||
|
| never
|
||||||
|
>,
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Route file to route info map by vue-router.
|
||||||
|
* Used by the \`sfc-typed-router\` Volar plugin to automatically type \`useRoute()\`.
|
||||||
|
*
|
||||||
|
* Each key is a file path relative to the project root with 2 properties:
|
||||||
|
* - routes: union of route names of the possible routes when in this page (passed to useRoute<...>())
|
||||||
|
* - views: names of nested views (can be passed to <RouterView name="...">)
|
||||||
|
*
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
export interface _RouteFileInfoMap {
|
||||||
|
'src/pages/index.vue': {
|
||||||
|
routes:
|
||||||
|
| '/'
|
||||||
|
views:
|
||||||
|
| never
|
||||||
|
}
|
||||||
|
'src/pages/[...all].vue': {
|
||||||
|
routes:
|
||||||
|
| '/[...all]'
|
||||||
|
views:
|
||||||
|
| never
|
||||||
|
}
|
||||||
|
'src/pages/about.md': {
|
||||||
|
routes:
|
||||||
|
| '/about'
|
||||||
|
views:
|
||||||
|
| never
|
||||||
|
}
|
||||||
|
'src/pages/hi/[name].vue': {
|
||||||
|
routes:
|
||||||
|
| '/hi/[name]'
|
||||||
|
views:
|
||||||
|
| never
|
||||||
|
}
|
||||||
|
'src/pages/README.md': {
|
||||||
|
routes:
|
||||||
|
| '/README'
|
||||||
|
views:
|
||||||
|
| never
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a union of possible route names in a certain route component file.
|
||||||
|
* Used by the \`sfc-typed-router\` Volar plugin to automatically type \`useRoute()\`.
|
||||||
|
*
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
export type _RouteNamesForFilePath<FilePath extends string> =
|
||||||
|
_RouteFileInfoMap extends Record<FilePath, infer Info>
|
||||||
|
? Info['routes']
|
||||||
|
: keyof RouteNamedMap
|
||||||
|
}
|
||||||
|
|
||||||
|
export {}
|
||||||
Vendored
+7
-5
@@ -2,15 +2,17 @@ declare interface Window {
|
|||||||
// extend the window
|
// extend the window
|
||||||
}
|
}
|
||||||
|
|
||||||
// with vite-plugin-vue-markdown, markdown files can be treated as Vue components
|
// with unplugin-vue-markdown, markdown files can be treated as Vue components
|
||||||
declare module '*.md' {
|
declare module '*.md' {
|
||||||
import { type DefineComponent } from 'vue'
|
import type { DefineComponent } from 'vue'
|
||||||
const component: DefineComponent<{}, {}, any>
|
|
||||||
|
const component: DefineComponent<object, object, any>
|
||||||
export default component
|
export default component
|
||||||
}
|
}
|
||||||
|
|
||||||
declare module '*.vue' {
|
declare module '*.vue' {
|
||||||
import { type DefineComponent } from 'vue'
|
import type { DefineComponent } from 'vue'
|
||||||
const component: DefineComponent<{}, {}, any>
|
|
||||||
|
const component: DefineComponent<object, object, any>
|
||||||
export default component
|
export default component
|
||||||
}
|
}
|
||||||
+1
-1
@@ -31,4 +31,4 @@ export const useUserStore = defineStore('user', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
if (import.meta.hot)
|
if (import.meta.hot)
|
||||||
import.meta.hot.accept(acceptHMRUpdate(useUserStore, import.meta.hot))
|
import.meta.hot.accept(acceptHMRUpdate(useUserStore as any, import.meta.hot))
|
||||||
+1
-1
@@ -18,7 +18,7 @@ html.dark {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#nprogress .bar {
|
#nprogress .bar {
|
||||||
background: rgb(13,148,136);
|
background: rgb(13, 148, 136);
|
||||||
opacity: 0.75;
|
opacity: 0.75;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
z-index: 1031;
|
z-index: 1031;
|
||||||
|
|||||||
+8
-11
@@ -12,17 +12,14 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.shiki-light {
|
.shiki,
|
||||||
background: #f8f8f8 !important;
|
.shiki span {
|
||||||
}
|
color: var(--shiki-light);
|
||||||
.shiki-dark {
|
background: var(--shiki-light-bg);
|
||||||
background: #0e0e0e !important;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
html.dark .shiki-light {
|
html.dark .shiki,
|
||||||
display: none;
|
html.dark .shiki span {
|
||||||
}
|
color: var(--shiki-dark);
|
||||||
|
background: var(--shiki-dark-bg);
|
||||||
html:not(.dark) .shiki-dark {
|
|
||||||
display: none;
|
|
||||||
}
|
}
|
||||||
+1
-1
@@ -1,3 +1,3 @@
|
|||||||
import { type ViteSSGContext } from 'vite-ssg'
|
import type { ViteSSGContext } from 'vite-ssg'
|
||||||
|
|
||||||
export type UserModule = (ctx: ViteSSGContext) => void
|
export type UserModule = (ctx: ViteSSGContext) => void
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
||||||
|
|
||||||
exports[`TheCounter.vue > should render 1`] = `"<div>10 <button class=\\"inc\\"> + </button><button class=\\"dec\\"> - </button></div>"`;
|
exports[`component TheCounter.vue > should render 1`] = `"<div>10 <button class="inc"> + </button><button class="dec"> - </button></div>"`;
|
||||||
@@ -2,7 +2,7 @@ import { mount } from '@vue/test-utils'
|
|||||||
import { describe, expect, it } from 'vitest'
|
import { describe, expect, it } from 'vitest'
|
||||||
import TheCounter from '../src/components/TheCounter.vue'
|
import TheCounter from '../src/components/TheCounter.vue'
|
||||||
|
|
||||||
describe('TheCounter.vue', () => {
|
describe('component TheCounter.vue', () => {
|
||||||
it('should render', () => {
|
it('should render', () => {
|
||||||
const wrapper = mount(TheCounter, { props: { initial: 10 } })
|
const wrapper = mount(TheCounter, { props: { initial: 10 } })
|
||||||
expect(wrapper.text()).toContain('10')
|
expect(wrapper.text()).toContain('10')
|
||||||
|
|||||||
+16
-17
@@ -1,32 +1,31 @@
|
|||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
|
"target": "ESNext",
|
||||||
|
"jsx": "preserve",
|
||||||
|
"lib": ["DOM", "ESNext"],
|
||||||
"baseUrl": ".",
|
"baseUrl": ".",
|
||||||
"module": "ESNext",
|
"module": "ESNext",
|
||||||
"target": "ESNext",
|
"moduleResolution": "Bundler",
|
||||||
"lib": ["DOM", "ESNext"],
|
"paths": {
|
||||||
"strict": true,
|
"~/*": ["src/*"]
|
||||||
"esModuleInterop": true,
|
},
|
||||||
"jsx": "preserve",
|
|
||||||
"skipLibCheck": true,
|
|
||||||
"moduleResolution": "node",
|
|
||||||
"resolveJsonModule": true,
|
"resolveJsonModule": true,
|
||||||
"noUnusedLocals": true,
|
|
||||||
"strictNullChecks": true,
|
|
||||||
"allowJs": true,
|
|
||||||
"forceConsistentCasingInFileNames": true,
|
|
||||||
"types": [
|
"types": [
|
||||||
"vitest",
|
"vitest",
|
||||||
"vite/client",
|
"vite/client",
|
||||||
"vue/ref-macros",
|
|
||||||
"vite-plugin-pages/client",
|
|
||||||
"vite-plugin-vue-component-preview/client",
|
|
||||||
"vite-plugin-vue-layouts/client",
|
"vite-plugin-vue-layouts/client",
|
||||||
"vite-plugin-pwa/client",
|
"vite-plugin-pwa/client",
|
||||||
"unplugin-vue-macros/macros-global"
|
"unplugin-vue-macros/macros-global"
|
||||||
],
|
],
|
||||||
"paths": {
|
"allowJs": true,
|
||||||
"~/*": ["src/*"]
|
"strict": true,
|
||||||
}
|
"strictNullChecks": true,
|
||||||
|
"noUnusedLocals": true,
|
||||||
|
"noEmit": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"forceConsistentCasingInFileNames": true,
|
||||||
|
"isolatedModules": true,
|
||||||
|
"skipLibCheck": true
|
||||||
},
|
},
|
||||||
"vueCompilerOptions": {
|
"vueCompilerOptions": {
|
||||||
"plugins": [
|
"plugins": [
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
import {
|
||||||
|
createLocalFontProcessor,
|
||||||
|
} from '@unocss/preset-web-fonts/local'
|
||||||
import {
|
import {
|
||||||
defineConfig,
|
defineConfig,
|
||||||
presetAttributify,
|
presetAttributify,
|
||||||
@@ -11,7 +14,7 @@ import {
|
|||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
shortcuts: [
|
shortcuts: [
|
||||||
['btn', 'px-4 py-1 rounded inline-block bg-teal-700 text-white cursor-pointer hover:bg-teal-800 disabled:cursor-default disabled:bg-gray-600 disabled:opacity-50'],
|
['btn', 'px-4 py-1 rounded inline-block bg-teal-700 text-white cursor-pointer !outline-none hover:bg-teal-800 disabled:cursor-default disabled:bg-gray-600 disabled:opacity-50'],
|
||||||
['icon-btn', 'inline-block cursor-pointer select-none opacity-75 transition duration-200 ease-in-out hover:opacity-100 hover:text-teal-600'],
|
['icon-btn', 'inline-block cursor-pointer select-none opacity-75 transition duration-200 ease-in-out hover:opacity-100 hover:text-teal-600'],
|
||||||
],
|
],
|
||||||
presets: [
|
presets: [
|
||||||
@@ -19,7 +22,6 @@ export default defineConfig({
|
|||||||
presetAttributify(),
|
presetAttributify(),
|
||||||
presetIcons({
|
presetIcons({
|
||||||
scale: 1.2,
|
scale: 1.2,
|
||||||
warn: true,
|
|
||||||
}),
|
}),
|
||||||
presetTypography(),
|
presetTypography(),
|
||||||
presetWebFonts({
|
presetWebFonts({
|
||||||
@@ -28,6 +30,7 @@ export default defineConfig({
|
|||||||
serif: 'DM Serif Display',
|
serif: 'DM Serif Display',
|
||||||
mono: 'DM Mono',
|
mono: 'DM Mono',
|
||||||
},
|
},
|
||||||
|
processors: createLocalFontProcessor(),
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
transformers: [
|
transformers: [
|
||||||
+42
-50
@@ -1,22 +1,22 @@
|
|||||||
import path from 'node:path'
|
import path from 'node:path'
|
||||||
import { defineConfig } from 'vite'
|
|
||||||
// import Preview from 'vite-plugin-vue-component-preview'
|
|
||||||
import Vue from '@vitejs/plugin-vue'
|
|
||||||
import Pages from 'vite-plugin-pages'
|
|
||||||
import generateSitemap from 'vite-ssg-sitemap'
|
|
||||||
import Layouts from 'vite-plugin-vue-layouts'
|
|
||||||
import Components from 'unplugin-vue-components/vite'
|
|
||||||
import AutoImport from 'unplugin-auto-import/vite'
|
|
||||||
import Markdown from 'vite-plugin-vue-markdown'
|
|
||||||
import { VitePWA } from 'vite-plugin-pwa'
|
|
||||||
import VueI18n from '@intlify/unplugin-vue-i18n/vite'
|
import VueI18n from '@intlify/unplugin-vue-i18n/vite'
|
||||||
import Inspect from 'vite-plugin-inspect'
|
import Shiki from '@shikijs/markdown-it'
|
||||||
import Inspector from 'vite-plugin-vue-inspector'
|
import { unheadVueComposablesImports } from '@unhead/vue'
|
||||||
|
import Vue from '@vitejs/plugin-vue'
|
||||||
import LinkAttributes from 'markdown-it-link-attributes'
|
import LinkAttributes from 'markdown-it-link-attributes'
|
||||||
import Unocss from 'unocss/vite'
|
import Unocss from 'unocss/vite'
|
||||||
import Shiki from 'markdown-it-shiki'
|
import AutoImport from 'unplugin-auto-import/vite'
|
||||||
|
import Components from 'unplugin-vue-components/vite'
|
||||||
import VueMacros from 'unplugin-vue-macros/vite'
|
import VueMacros from 'unplugin-vue-macros/vite'
|
||||||
import WebfontDownload from 'vite-plugin-webfont-dl'
|
import Markdown from 'unplugin-vue-markdown/vite'
|
||||||
|
import { defineConfig } from 'vite'
|
||||||
|
import { VitePWA } from 'vite-plugin-pwa'
|
||||||
|
import VueDevTools from 'vite-plugin-vue-devtools'
|
||||||
|
import Layouts from 'vite-plugin-vue-layouts'
|
||||||
|
import generateSitemap from 'vite-ssg-sitemap'
|
||||||
|
import { VueRouterAutoImports } from 'vue-router/unplugin'
|
||||||
|
import VueRouter from 'vue-router/vite'
|
||||||
|
import 'vitest/config'
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
resolve: {
|
resolve: {
|
||||||
@@ -26,34 +26,36 @@ export default defineConfig({
|
|||||||
},
|
},
|
||||||
|
|
||||||
plugins: [
|
plugins: [
|
||||||
// Preview(),
|
// https://github.com/vuejs/router
|
||||||
|
VueRouter({
|
||||||
|
extensions: ['.vue', '.md'],
|
||||||
|
dts: 'src/route-map.d.ts',
|
||||||
|
}),
|
||||||
|
|
||||||
VueMacros({
|
VueMacros({
|
||||||
plugins: {
|
plugins: {
|
||||||
vue: Vue({
|
vue: Vue({
|
||||||
include: [/\.vue$/, /\.md$/],
|
include: [/\.vue$/, /\.md$/],
|
||||||
reactivityTransform: true,
|
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
|
|
||||||
// https://github.com/hannoeru/vite-plugin-pages
|
|
||||||
Pages({
|
|
||||||
extensions: ['vue', 'md'],
|
|
||||||
}),
|
|
||||||
|
|
||||||
// https://github.com/JohnCampionJr/vite-plugin-vue-layouts
|
// https://github.com/JohnCampionJr/vite-plugin-vue-layouts
|
||||||
Layouts(),
|
Layouts(),
|
||||||
|
|
||||||
// https://github.com/antfu/unplugin-auto-import
|
// https://github.com/antfu/unplugin-auto-import
|
||||||
AutoImport({
|
AutoImport({
|
||||||
|
include: [/\.[jt]sx?$/, /\.vue$/, /\.vue\?vue/, /\.md$/],
|
||||||
imports: [
|
imports: [
|
||||||
'vue',
|
'vue',
|
||||||
'vue-router',
|
|
||||||
'vue-i18n',
|
'vue-i18n',
|
||||||
'vue/macros',
|
|
||||||
'@vueuse/head',
|
|
||||||
'@vueuse/core',
|
'@vueuse/core',
|
||||||
|
unheadVueComposablesImports,
|
||||||
|
VueRouterAutoImports,
|
||||||
|
{
|
||||||
|
// add any other imports you were relying on
|
||||||
|
'vue-router/auto': ['useLink'],
|
||||||
|
},
|
||||||
],
|
],
|
||||||
dts: 'src/auto-imports.d.ts',
|
dts: 'src/auto-imports.d.ts',
|
||||||
dirs: [
|
dirs: [
|
||||||
@@ -73,22 +75,15 @@ export default defineConfig({
|
|||||||
}),
|
}),
|
||||||
|
|
||||||
// https://github.com/antfu/unocss
|
// https://github.com/antfu/unocss
|
||||||
// see unocss.config.ts for config
|
// see uno.config.ts for config
|
||||||
Unocss(),
|
Unocss(),
|
||||||
|
|
||||||
// https://github.com/antfu/vite-plugin-vue-markdown
|
// https://github.com/unplugin/unplugin-vue-markdown
|
||||||
// Don't need this? Try vitesse-lite: https://github.com/antfu/vitesse-lite
|
// Don't need this? Try vitesse-lite: https://github.com/antfu/vitesse-lite
|
||||||
Markdown({
|
Markdown({
|
||||||
wrapperClasses: 'prose prose-sm m-auto text-left',
|
wrapperClasses: 'prose prose-sm m-auto text-left',
|
||||||
headEnabled: true,
|
headEnabled: true,
|
||||||
markdownItSetup(md) {
|
async markdownItSetup(md) {
|
||||||
// https://prismjs.com/
|
|
||||||
md.use(Shiki, {
|
|
||||||
theme: {
|
|
||||||
light: 'vitesse-light',
|
|
||||||
dark: 'vitesse-dark',
|
|
||||||
},
|
|
||||||
})
|
|
||||||
md.use(LinkAttributes, {
|
md.use(LinkAttributes, {
|
||||||
matcher: (link: string) => /^https?:\/\//.test(link),
|
matcher: (link: string) => /^https?:\/\//.test(link),
|
||||||
attrs: {
|
attrs: {
|
||||||
@@ -96,6 +91,13 @@ export default defineConfig({
|
|||||||
rel: 'noopener',
|
rel: 'noopener',
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
md.use(await Shiki({
|
||||||
|
defaultColor: false,
|
||||||
|
themes: {
|
||||||
|
light: 'vitesse-light',
|
||||||
|
dark: 'vitesse-dark',
|
||||||
|
},
|
||||||
|
}))
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
|
|
||||||
@@ -136,36 +138,26 @@ export default defineConfig({
|
|||||||
include: [path.resolve(__dirname, 'locales/**')],
|
include: [path.resolve(__dirname, 'locales/**')],
|
||||||
}),
|
}),
|
||||||
|
|
||||||
// https://github.com/antfu/vite-plugin-inspect
|
// https://github.com/webfansplz/vite-plugin-vue-devtools
|
||||||
// Visit http://localhost:3333/__inspect/ to see the inspector
|
VueDevTools(),
|
||||||
Inspect(),
|
|
||||||
|
|
||||||
// https://github.com/webfansplz/vite-plugin-vue-inspector
|
|
||||||
Inspector({
|
|
||||||
toggleButtonVisibility: 'never',
|
|
||||||
}),
|
|
||||||
|
|
||||||
// https://github.com/feat-agency/vite-plugin-webfont-dl
|
|
||||||
WebfontDownload(),
|
|
||||||
],
|
],
|
||||||
|
|
||||||
// https://github.com/vitest-dev/vitest
|
// https://github.com/vitest-dev/vitest
|
||||||
test: {
|
test: {
|
||||||
include: ['test/**/*.test.ts'],
|
include: ['test/**/*.test.ts'],
|
||||||
environment: 'jsdom',
|
environment: 'jsdom',
|
||||||
deps: {
|
|
||||||
inline: ['@vue', '@vueuse', 'vue-demi'],
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// https://github.com/antfu/vite-ssg
|
// https://github.com/antfu/vite-ssg
|
||||||
ssgOptions: {
|
ssgOptions: {
|
||||||
script: 'async',
|
script: 'async',
|
||||||
formatting: 'minify',
|
formatting: 'minify',
|
||||||
crittersOptions: {
|
beastiesOptions: {
|
||||||
reduceInlineStyles: false,
|
reduceInlineStyles: false,
|
||||||
},
|
},
|
||||||
onFinished() { generateSitemap() },
|
onFinished() {
|
||||||
|
generateSitemap()
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
ssr: {
|
ssr: {
|
||||||
|
|||||||
Reference in new issue
Block a user