Author SHA1 Message Date
Anthony Fu 29c1296310 chore: update deps 2026-08-22 07:47:20 +09:00
Anthony Fu a8c8345f75 chore: update deps 2026-03-18 18:33:48 +09:00
Anthony Fu 4530d4c622 chore: update deps 2026-02-09 17:01:04 +09:00
lita-jerry afa6e86dec refactor: recommend project references over single extends in root tsconfig (#139) 2026-01-06 15:38:57 +09:00
Anthony Fu 95d7f62dd6 chore: update deps 2025-10-28 15:45:43 +09:00
Anthony Fu 544858b2e8 chore: update deps 2025-10-02 16:11:33 +09:00
qianYuanJ ba4258a17b fix: change text-green5 to text-green-400 (#136) 2025-08-01 13:32:55 +09:00
qianYuanJ 7ac7d496b4 fix(docs):Change Nuxt3 in the document to Nuxt4 (#135) 2025-07-30 21:24:30 +09:00
Anthony Fu 4fad52b949 feat: upgrade to Nuxt 4 2025-07-17 09:55:00 +09:00
Anthony Fu 83dae853fe chore: update deps 2025-07-02 10:59:44 +09:00
Anthony Fu 6ddb6f5f86 chore: update deps 2025-06-04 15:30:52 +09:00
Anthony Fu 396067234c chore: use nuxt over nuxi 2025-06-02 17:42:50 +09:00
Anthony Fu d0517d7292 chore: update 2025-06-02 17:42:27 +09:00
云游君 6ccc998e03 chore: add nuxi preview command (#134) 2025-06-02 16:39:48 +08:00
IlyaL 6ce4bb8fff chore: add .DS_Store to .gitignore (#131) 2025-04-12 09:00:58 +08:00
Anthony Fu a32ed11704 chore: update deps 2025-04-08 15:14:53 +09:00
Robin 0b2d1b0d1e feat: use nuxi typecheck to ensure up to date types for development (#129) 2025-04-08 14:11:24 +08:00
IlyaL 03099b8c0a fix: copy pnpm-workspace.yaml for docker build catalog resolution (#130) 2025-04-08 14:02:27 +08:00
Anthony Fu 2e78773c3c chore: update deps 2025-03-27 13:46:24 +09:00
Robin 3d932d5a80 fix: align docker FromAsCasing (#128)
https://docs.docker.com/reference/build-checks/from-as-casing/
2025-03-27 12:44:18 +08:00
Anthony Fu cb26a3a2c8 chore: migrate to pnpm catalogs 2025-03-25 16:11:17 +09:00
Anthony Fu 03d8cd0785 chore: update deps 2025-03-05 16:36:49 +08:00
Anthony Fu 2c6d05f0be feat: use unocss wind4 preset 2025-03-05 15:12:05 +08:00
Anthony Fu 1a3ee1ffab chore: update deps 2025-03-05 12:55:08 +08:00
Anthony Fu 24b4986cfe chore: update deps 2025-02-07 14:52:27 +08:00
Anthony Fu 45826b2c1b chore: update deps 2025-02-05 12:40:45 +08:00
Anthony Fu 9d7aea97ff chore: update deps 2025-01-16 22:55:12 +08:00
Anthony Fu 388854d760 chore: update deps 2024-12-26 17:34:14 +08:00
Anthony Fu 6b9f94acb8 chore: update deps 2024-12-24 14:09:58 +08:00
Anthony Fu 4aaf882b31 chore: update deps 2024-12-06 14:45:07 +08:00
Anthony Fu 67259dc9ed chore: update deps 2024-12-03 13:51:52 +08:00
Anthony Fu c075b454d7 feat: ship unocss fonts 2024-11-29 14:17:58 +08:00
Anthony Fu ac2d73a972 chore: update to vite 6 2024-11-29 13:42:44 +08:00
Charlie ✨andAnthony Fu c1335e69db chore: pin typescript (#126)
Co-authored-by: Anthony Fu <github@antfu.me>
2024-11-27 21:01:23 +08:00
Anthony Fu 4527e35a80 chore: update deps 2024-11-27 18:51:32 +08:00
Anthony Fu 9c339b2046 chore: update deps 2024-11-21 17:02:47 +08:00
云游君 ea0b4d2349 feat: add Dockerfile (#124) 2024-10-28 20:26:25 +08:00
Anthony Fu a146ab16a2 chore: update deps 2024-10-24 23:33:49 +09:00
Anthony Fu 213c6cd424 chore: update deps 2024-10-19 15:05:15 +09:00
Anthony Fu 7b43079b64 chore: update deps 2024-09-19 12:21:05 +02:00
云游君 b168368dbc fix: p tag wrap ul for nuxt ssr (#120) 2024-09-09 02:08:43 +02:00
Max Chang e7ececf87f docs: update file path (#119) 2024-08-30 14:55:17 +02:00
Anthony Fu 8d6b8e2673 chore: update deps 2024-08-26 17:17:16 +02:00
云游君 5f4fa624cb chore: update repo path in README.md (#118) 2024-08-24 21:53:48 +02:00
Anthony Fu fe3b8ce1c1 feat: use nuxt 4 structure 2024-08-14 14:29:01 +02:00
Anthony Fu 3f192323d8 chore: update deps 2024-08-14 14:17:50 +02:00
Hannah JensenandAnthony Fu 1c8e1ab817 feat: update Node.js version in netlify.toml (#117)
Co-authored-by: Anthony Fu <github@antfu.me>
2024-07-25 18:13:04 +02:00
云游君andyunyouyang 43ca598c02 feat: use home layout for index (#116)
Co-authored-by: yunyouyang <yunyouyang@tencent.com>
2024-07-11 23:54:03 +08:00
Joaquín Sánchez 3a235915f2 chore: add antfu open collective (#114) 2024-05-12 04:43:19 +02:00
Anthony Fu 0d631cd09f chore: update deps 2024-05-10 16:03:20 +02:00
Anthony Fu f9d842ee50 chore: update lock 2024-04-23 20:07:43 +02:00
Anthony Fu 7dbf5c3d97 chore: update deps 2024-04-23 18:17:37 +02:00
Anthony Fu 8e9de004c9 chore: update deps 2024-04-11 14:20:08 +02:00
Anthony Fu e284c16c54 chore: update deps 2024-04-08 16:28:19 +02:00
Anthony Fu 6efa4c6c7f chore: update deps 2024-04-05 13:39:43 +02:00
Anthony Fu 1c429961e4 chore: update deps 2024-03-28 10:35:12 +01:00
Anthony Fu 1f0f6ed6e9 chore: lint 2024-03-28 08:56:52 +01:00
Anthony Fu 486335d807 chore: update deps 2024-03-28 01:05:16 +01:00
Anthony Fu cf7040f16f chore: update deps 2024-03-27 00:15:15 +01:00
Anthony Fu ebd06e31d2 chore: update 2024-03-20 20:23:39 +01:00
Anthony Fu b2248289ab feat: use @nuxt/eslint 2024-03-20 20:20:07 +01:00
Aymane Dara Hlamnach 8fb9588ea2 fix(pwa): set address bar theme color (#109) 2024-02-05 15:19:15 +01:00
Anthony Fu d29567248b feat: add nuxt-module-eslint-config 2024-01-19 11:00:23 +01:00
Anthony Fu 4e0e30dd01 chore: update deps 2023-12-10 20:36:20 +01:00
Anthony Fu 0f4c45c4cc chore: improve linting 2023-12-07 18:33:58 +01:00
Anthony Fu b45e219298 feat: enable formatters in eslint-config 2023-12-04 18:05:08 +01:00
Anthony Fu 32b6eba6cb chore: update deps 2023-11-27 11:54:47 +01:00
Anthony Fu 8be97a4237 chore: update deps 2023-11-20 20:14:21 +01:00
Anthony Fu 0e682a796d chore: update deps 2023-10-20 04:11:10 +08:00
Anthony Fu aa30218698 chore: fix eslint vscode setup 2023-09-28 08:47:47 +08:00
Anthony Fu ea6033cfe9 chore: update deps, migrate to new eslint format 2023-09-28 07:55:17 +08:00
Anthony Fu 198e2c5e4b chore: update 2023-08-28 10:41:28 +02:00
Anthony Fu bf20ae4c2b chore: update deps 2023-08-28 05:01:23 +02:00
Anthony Fu 8a21f03439 chore: update deps 2023-08-06 11:42:54 +02:00
Anthony Fu cbc248c5d0 chore: update lock 2023-08-03 11:18:18 +02:00
Anthony Fu a6e5e98f6f chore: update deps 2023-08-01 17:50:56 +02:00
Anthony Fu f93218a441 chore: update deps 2023-07-31 21:04:12 +02:00
Anthony Fu 6ceecab0bd chore: update deps 2023-07-18 11:27:01 +02:00
Anthony Fu 38b0c41e9c chore: fix types 2023-07-18 11:25:35 +02:00
RinatMadreiter e6497af762 docs: update README.md (#96) 2023-06-26 11:40:57 +02:00
Anthony Fu 80f272cb08 chore: update deps 2023-06-21 14:24:11 +02:00
Anthony Fu b78a03fb2c feat: enable typedPages 2023-06-13 17:47:28 +02:00
Anthony Fu 929c7a1914 chore: update deps 2023-06-13 16:43:13 +02:00
Joaquín Sánchez fefb1e96a5 chore: update pwa module to fix typecheck in plugin template (#93) 2023-05-21 14:06:47 +02:00
云游君 405aaaa69d ci: add lint & typecheck by github actions (#94) 2023-05-21 14:06:32 +02:00
Anthony Fu 81d172961c chore: update deps 2023-05-20 15:40:34 +02:00
36 changed files with 12116 additions and 8976 deletions

No files matched your search

-6
View File
@@ -1,6 +0,0 @@
{
"extends": [
"@antfu",
"@unocss"
]
}
+2 -1
View File
@@ -1 +1,2 @@
github: antfu open_collective: antfu
github: [antfu]
+43
View File
@@ -0,0 +1,43 @@
name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: pnpm/action-setup@v6
- uses: actions/setup-node@v7
with:
node-version: lts/*
cache: pnpm
- name: Install
run: pnpm install
- name: Lint
run: pnpm run lint
typecheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: pnpm/action-setup@v6
- uses: actions/setup-node@v7
with:
node-version: lts/*
cache: pnpm
- name: Install
run: pnpm install
- name: Typecheck
run: pnpm run typecheck
+2
View File
@@ -1,3 +1,4 @@
.DS_Store
node_modules node_modules
*.log *.log
dist dist
@@ -5,3 +6,4 @@ dist
.nuxt .nuxt
.env .env
.idea/ .idea/
public/assets/fonts
-3
View File
@@ -1,3 +0,0 @@
shamefully-hoist=true
strict-peer-dependencies=false
shell-emulator=true
+2 -1
View File
@@ -5,6 +5,7 @@
"antfu.goto-alias", "antfu.goto-alias",
"csstools.postcss", "csstools.postcss",
"dbaeumer.vscode-eslint", "dbaeumer.vscode-eslint",
"vue.volar" "vue.volar",
"antfu.pnpm-catalog-lens"
] ]
} }
+40 -5
View File
@@ -1,10 +1,45 @@
{ {
"prettier.enable": false,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"files.associations": { "files.associations": {
"*.css": "postcss" "*.css": "postcss"
}, },
"editor.formatOnSave": false
// Disable the default formatter, use eslint instead
"prettier.enable": false,
"editor.formatOnSave": false,
// 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": "*-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" }
],
// Enable eslint for all supported languages
"eslint.validate": [
"javascript",
"javascriptreact",
"typescript",
"typescriptreact",
"vue",
"html",
"markdown",
"json",
"jsonc",
"yaml"
],
"interline-translate.knownPopularWordCount": 6000,
"iconify.annotations": true,
"iconify.inplace": true
} }
+22
View File
@@ -0,0 +1,22 @@
FROM node:20-alpine AS build-stage
WORKDIR /app
RUN corepack enable
COPY .npmrc package.json pnpm-lock.yaml pnpm-workspace.yaml ./
RUN --mount=type=cache,id=pnpm-store,target=/root/.pnpm-store \
pnpm install --frozen-lockfile
COPY . .
RUN pnpm build
# SSR
FROM node:20-alpine AS production-stage
WORKDIR /app
COPY --from=build-stage /app/.output ./.output
EXPOSE 3000
CMD ["node", ".output/server/index.mjs"]
+13 -18
View File
@@ -1,25 +1,21 @@
<p align="center"> <p align="center">
<img src="https://user-images.githubusercontent.com/11247099/140462375-7b7ac4db-35b7-453c-8a05-13d8d20282c4.png" width="600"/> <img src="https://user-images.githubusercontent.com/11247099/140462375-7b7ac4db-35b7-453c-8a05-13d8d20282c4.png" alt="Vitesse" width="600"/>
</p> </p>
<h2 align="center"> <h2 align="center">
<a href="https://github.com/antfu/vitesse">Vitesse</a> for Nuxt 3 <a href="https://github.com/antfu/vitesse">Vitesse</a> for Nuxt 4
</h2><br> </h2><br>
<pre align="center">
🧪 Working in Progress
</pre>
<p align="center"> <p align="center">
<br> <br>
<a href="https://vitesse-nuxt3.netlify.app/">🖥 Online Preview</a> <a href="https://vitesse-nuxt3.netlify.app/">🖥 Online Preview</a>
<br><br> <br><br>
<a href="https://stackblitz.com/github/antfu/vitesse-nuxt3"><img src="https://developer.stackblitz.com/img/open_in_stackblitz.svg" alt=""></a> <a href="https://stackblitz.com/github/antfu/vitesse-nuxt"><img src="https://developer.stackblitz.com/img/open_in_stackblitz.svg" alt="Open in StackBlitz" /></a>
</p> </p>
## Features ## Features
- 💚 [Nuxt 3](https://nuxt.com/) - SSR, ESR, File-based routing, components auto importing, modules, etc. - 💚 [Nuxt 4](https://nuxt.com/) - SSR, ESR, File-based routing, components auto importing, modules, etc.
- ⚡️ Vite - Instant HMR. - ⚡️ Vite - Instant HMR.
@@ -29,9 +25,9 @@
- 🔥 The `<script setup>` syntax. - 🔥 The `<script setup>` syntax.
- 🍍 [State Management via Pinia](https://github.com/vuejs/pinia), see [./composables/user.ts](./composables/user.ts). - 🍍 [State Management via Pinia](https://github.com/vuejs/pinia), see [./app/composables/user.ts](./app/composables/user.ts).
- 📑 [Layout system](./layouts). - 📑 [Layout system](./app/layouts).
- 📥 APIs auto importing - for Composition API, VueUse and custom composables. - 📥 APIs auto importing - for Composition API, VueUse and custom composables.
@@ -39,8 +35,7 @@
- 🦾 TypeScript, of course. - 🦾 TypeScript, of course.
- 📲 [PWA](https://github.com/vite-pwa/nuxt) with offline support and auto update behavior. - 📲 [PWA](https://github.com/vite-pwa/nuxt) with offline support and auto-update behavior.
## Plugins ## Plugins
@@ -50,12 +45,12 @@
- [ColorMode](https://github.com/nuxt-modules/color-mode) - dark and Light mode with auto detection made easy with Nuxt. - [ColorMode](https://github.com/nuxt-modules/color-mode) - dark and Light mode with auto detection made easy with Nuxt.
- [UnoCSS](https://github.com/unocss/unocss) - the instant on-demand atomic CSS engine. - [UnoCSS](https://github.com/unocss/unocss) - the instant on-demand atomic CSS engine.
- [Pinia](https://github.com/vuejs/pinia) - intuitive, type safe, light and flexible Store for Vue. - [Pinia](https://github.com/vuejs/pinia) - intuitive, type safe, light and flexible Store for Vue.
- [VitePWA](https://github.com/vite-pwa/nuxt) - zero-config PWA Plugin for Nuxt 3. - [VitePWA](https://github.com/vite-pwa/nuxt) - zero-config PWA Plugin for Nuxt 4.
- [DevTools](https://github.com/nuxt/devtools) - unleash Nuxt Developer Experience. - [DevTools](https://github.com/nuxt/devtools) - unleash Nuxt Developer Experience.
## IDE ## IDE
We recommend using [VS Code](https://code.visualstudio.com/) with [Volar](https://github.com/johnsoncodehk/volar) to get the best experience (You might want to disable Vetur if you have it). We recommend using [VS Code](https://code.visualstudio.com/) with [Volar](https://github.com/johnsoncodehk/volar) to get the best experience (You might want to disable [Vetur](https://vuejs.github.io/vetur/) if you have it).
## Variations ## Variations
@@ -68,18 +63,18 @@ We recommend using [VS Code](https://code.visualstudio.com/) with [Volar](https:
### Online ### Online
<a href="https://stackblitz.com/github/antfu/vitesse-nuxt3"><img src="https://developer.stackblitz.com/img/open_in_stackblitz.svg" alt=""></a> <a href="https://stackblitz.com/github/antfu/vitesse-nuxt"><img src="https://developer.stackblitz.com/img/open_in_stackblitz.svg" alt=""></a>
### GitHub Template ### GitHub Template
[Create a repo from this template on GitHub](https://github.com/antfu/vitesse-nuxt3/generate). [Create a repo from this template on GitHub](https://github.com/antfu/vitesse-nuxt/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-nuxt3 my-nuxt3-app npx degit antfu/vitesse-nuxt my-nuxt-app
cd my-nuxt3-app cd my-nuxt-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
``` ```
+4 -3
View File
@@ -14,14 +14,15 @@ useHead({
</template> </template>
<style> <style>
html, body , #__nuxt{ html,
body,
#__nuxt {
height: 100vh; height: 100vh;
margin: 0; margin: 0;
padding: 0; padding: 0;
} }
html.dark { html.dark {
background: #222; color-scheme: dark;
color: white;
} }
</style> </style>
@@ -4,13 +4,13 @@ const { count, inc, dec } = useCount()
<template> <template>
<div inline-flex m="y-3"> <div inline-flex m="y-3">
<button rounded-full p-2 btn @click="dec()"> <button btn p-2 rounded-full @click="dec()">
<div i-carbon-subtract /> <div i-carbon-subtract />
</button> </button>
<div font="mono" w="15" m-auto inline-block> <div font="mono" w="15" m-auto inline-block>
{{ count }} {{ count }}
</div> </div>
<button rounded-full p-2 btn @click="inc()"> <button btn p-2 rounded-full @click="inc()">
<div i-carbon-add /> <div i-carbon-add />
</button> </button>
</div> </div>
File renamed without changes.
File renamed without changes.
@@ -14,7 +14,8 @@ function go() {
id="input" id="input"
v-model="name" v-model="name"
placeholder="What's your name?" placeholder="What's your name?"
type="text" autocomplete="off" type="text"
autocomplete="off"
p="x-4 y-2" m="t-5" w="250px" p="x-4 y-2" m="t-5" w="250px"
text="center" bg="transparent" text="center" bg="transparent"
border="~ rounded gray-200 dark:gray-700" border="~ rounded gray-200 dark:gray-700"
@@ -23,7 +24,7 @@ function go() {
> >
<div> <div>
<button <button
m-3 text-sm btn text-sm btn m-3
:disabled="!name" :disabled="!name"
@click="go" @click="go"
> >
@@ -1,8 +1,8 @@
<template> <template>
<div inline-flex cursor-default text-2xl font-300> <div text-2xl font-300 inline-flex cursor-default>
<div flex flex-col children:mx-auto> <div flex flex-col children:mx-auto>
<img inline-block h-18 w-18 src="/nuxt.svg"> <img h-18 w-18 inline-block src="/nuxt.svg">
<span mt--2 text-green5>Nuxt 3</span> <span text-green-400 mt--2>Nuxt 4</span>
</div> </div>
<div <div
text="3xl gray4" text="3xl gray4"
@@ -10,8 +10,8 @@
i-carbon-add transform transition-all-500 hover:rotate-135 i-carbon-add transform transition-all-500 hover:rotate-135
/> />
<div flex flex-col children:mx-auto> <div flex flex-col children:mx-auto>
<img inline-block h-18 w-18 src="/vite.png"> <img h-18 w-18 inline-block src="/vite.png">
<span mt--2 text-purple5>Vitesse</span> <span text-purple-500 mt--2>Vitesse</span>
</div> </div>
</div> </div>
</template> </template>
@@ -6,7 +6,7 @@ const time = useTimeAgo(() => data.value?.startAt || 0)
<template> <template>
<div text-gray:80> <div text-gray:80>
<span font-500 text-gray>{{ data?.pageview }}</span> <span text-gray font-500>{{ data?.pageview }}</span>
page views since page views since
<span text-gray>{{ time }}</span> <span text-gray>{{ time }}</span>
</div> </div>
File renamed without changes.
File renamed without changes.
+1
View File
@@ -1,4 +1,5 @@
import type { ModuleOptions } from '@vite-pwa/nuxt' import type { ModuleOptions } from '@vite-pwa/nuxt'
import process from 'node:process'
import { appDescription, appName } from '../constants/index' import { appDescription, appName } from '../constants/index'
const scope = '/' const scope = '/'
+2
View File
@@ -0,0 +1,2 @@
export const appName = 'Vitesse for Nuxt 4'
export const appDescription = 'Vitesse for Nuxt 4'
+1 -1
View File
@@ -4,7 +4,7 @@ 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.
```html ```vue
<script setup lang="ts"> <script setup lang="ts">
definePageMeta({ definePageMeta({
layout: 'home', layout: 'home',
@@ -2,7 +2,7 @@
<main class="px-10 py-20 text-center"> <main class="px-10 py-20 text-center">
<slot /> <slot />
<Footer /> <Footer />
<div class="mx-auto mt-5 text-center text-sm opacity-25"> <div class="text-sm mx-auto mt-5 text-center opacity-25">
[Default Layout] [Default Layout]
</div> </div>
</main> </main>
+1 -1
View File
@@ -2,7 +2,7 @@
<main class="px-10 py-20 text-center"> <main class="px-10 py-20 text-center">
<slot /> <slot />
<Footer /> <Footer />
<div class="mx-auto mt-5 text-center text-sm opacity-25"> <div class="text-sm mx-auto mt-5 text-center opacity-25">
[Home Layout] [Home Layout]
</div> </div>
</main> </main>
File renamed without changes.
+5 -5
View File
@@ -1,5 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
const route = useRoute() const route = useRoute<'hi-id'>()
const user = useUserStore() const user = useUserStore()
const name = route.params.id const name = route.params.id
@@ -14,7 +14,7 @@ definePageMeta({
<template> <template>
<div> <div>
<div i-twemoji:waving-hand inline-block animate-shake-x animate-duration-5000 text-4xl /> <div i-twemoji:waving-hand text-4xl inline-block animate-shake-x animate-duration-5000 />
<h3 text-2xl font-500> <h3 text-2xl font-500>
Hi, Hi,
</h3> </h3>
@@ -23,7 +23,7 @@ definePageMeta({
</div> </div>
<template v-if="user.otherNames.length"> <template v-if="user.otherNames.length">
<p my-4 text-sm> <div text-sm my-4>
<span op-50>Also as known as:</span> <span op-50>Also as known as:</span>
<ul> <ul>
<li v-for="otherName in user.otherNames" :key="otherName"> <li v-for="otherName in user.otherNames" :key="otherName">
@@ -32,14 +32,14 @@ definePageMeta({
</router-link> </router-link>
</li> </li>
</ul> </ul>
</p> </div>
</template> </template>
<Counter /> <Counter />
<div> <div>
<NuxtLink <NuxtLink
class="m-3 text-sm btn" class="text-sm btn m-3"
to="/" to="/"
> >
Back Back
+32
View File
@@ -0,0 +1,32 @@
<script setup lang="ts">
definePageMeta({
layout: 'home',
})
const online = useOnline()
</script>
<template>
<div>
<Logos mb-6 />
<ClientOnly>
<Suspense>
<PageView v-if="online" />
<div v-else text-gray:80>
You're offline
</div>
<template #fallback>
<div op50 italic>
<span animate-pulse>Loading...</span>
</div>
</template>
</Suspense>
<template #fallback>
<div op50>
<span animate-pulse>...</span>
</div>
</template>
</ClientOnly>
<InputEntry />
</div>
</template>
-2
View File
@@ -1,2 +0,0 @@
export const appName = 'Vitesse for Nuxt 3'
export const appDescription = 'Vitesse for Nuxt 3'
+12
View File
@@ -0,0 +1,12 @@
// @ts-check
import antfu from '@antfu/eslint-config'
import nuxt from './.nuxt/eslint.config.mjs'
export default antfu(
{
unocss: true,
formatters: true,
pnpm: true,
},
)
.append(nuxt())
+3 -3
View File
@@ -1,10 +1,10 @@
[build.environment]
NODE_VERSION = "16"
[build] [build]
publish = "dist" publish = "dist"
command = "pnpm run build" command = "pnpm run build"
[build.environment]
NODE_VERSION = "20"
[[redirects]] [[redirects]]
from = "/*" from = "/*"
to = "/index.html" to = "/index.html"
+47 -34
View File
@@ -1,5 +1,5 @@
import { pwa } from './config/pwa' import { pwa } from './app/config/pwa'
import { appDescription } from './constants/index' import { appDescription } from './app/constants/index'
export default defineNuxtConfig({ export default defineNuxtConfig({
modules: [ modules: [
@@ -8,36 +8,11 @@ export default defineNuxtConfig({
'@pinia/nuxt', '@pinia/nuxt',
'@nuxtjs/color-mode', '@nuxtjs/color-mode',
'@vite-pwa/nuxt', '@vite-pwa/nuxt',
'@nuxt/eslint',
], ],
experimental: { devtools: {
// when using generate, payload js assets included in sw precache manifest enabled: true,
// but missing on offline, disabling extraction it until fixed
payloadExtraction: false,
inlineSSRStyles: false,
renderJsonPayloads: true,
// watcher: 'parcel',
},
css: [
'@unocss/reset/tailwind.css',
],
colorMode: {
classSuffix: '',
},
nitro: {
esbuild: {
options: {
target: 'esnext',
},
},
prerender: {
crawlLinks: false,
routes: ['/'],
ignore: ['/hi'],
},
}, },
app: { app: {
@@ -52,13 +27,51 @@ export default defineNuxtConfig({
{ name: 'viewport', content: 'width=device-width, initial-scale=1' }, { name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ name: 'description', content: appDescription }, { name: 'description', content: appDescription },
{ name: 'apple-mobile-web-app-status-bar-style', content: 'black-translucent' }, { name: 'apple-mobile-web-app-status-bar-style', content: 'black-translucent' },
{ name: 'theme-color', media: '(prefers-color-scheme: light)', content: 'white' },
{ name: 'theme-color', media: '(prefers-color-scheme: dark)', content: '#222222' },
], ],
}, },
}, },
pwa, colorMode: {
classSuffix: '',
devtools: {
enabled: true,
}, },
future: {
compatibilityVersion: 4,
},
experimental: {
// when using generate, payload js assets included in sw precache manifest
// but missing on offline, disabling extraction it until fixed
payloadExtraction: false,
renderJsonPayloads: true,
typedPages: true,
},
compatibilityDate: '2024-08-14',
nitro: {
esbuild: {
options: {
target: 'esnext',
},
},
prerender: {
crawlLinks: false,
routes: ['/'],
ignore: ['/hi'],
},
},
eslint: {
config: {
standalone: false,
nuxt: {
sortConfigKeys: true,
},
},
},
pwa,
}) })
+31 -25
View File
@@ -1,34 +1,40 @@
{ {
"type": "module",
"private": true, "private": true,
"packageManager": "pnpm@8.5.1", "packageManager": "pnpm@11.22.0",
"scripts": { "scripts": {
"build": "nuxi build", "build": "nuxt build",
"dev": "nuxi dev", "dev:pwa": "VITE_PLUGIN_PWA=true nuxt dev",
"dev:pwa": "VITE_PLUGIN_PWA=true nuxi dev", "dev": "nuxt dev",
"generate": "nuxt generate",
"prepare": "nuxt prepare",
"preview": "nuxt preview",
"start": "node .output/server/index.mjs", "start": "node .output/server/index.mjs",
"typecheck": "vue-tsc --noEmit", "start:generate": "npx serve .output/public",
"lint": "eslint .", "lint": "eslint .",
"postinstall": "nuxi prepare", "typecheck": "nuxt typecheck"
"generate": "nuxi generate",
"start:generate": "npx serve .output/public"
}, },
"devDependencies": { "devDependencies": {
"@antfu/eslint-config": "^0.38.6", "@antfu/eslint-config": "catalog:dev",
"@iconify-json/carbon": "^1.1.16", "@iconify-json/carbon": "catalog:icons",
"@iconify-json/twemoji": "^1.1.11", "@iconify-json/twemoji": "catalog:icons",
"@nuxt/devtools": "npm:@nuxt/devtools-edge@latest", "@nuxt/devtools": "catalog:build",
"@nuxtjs/color-mode": "^3.2.0", "@nuxt/eslint": "catalog:build",
"@parcel/watcher": "^2.1.0", "@nuxtjs/color-mode": "catalog:build",
"@pinia/nuxt": "^0.4.11", "@pinia/nuxt": "catalog:build",
"@unocss/eslint-config": "^0.51.13", "@types/node": "catalog:dev",
"@unocss/nuxt": "^0.51.13", "@unocss/eslint-config": "catalog:build",
"@vite-pwa/nuxt": "^0.0.8", "@unocss/nuxt": "catalog:build",
"@vueuse/nuxt": "^10.1.2", "@vite-pwa/nuxt": "catalog:build",
"consola": "^3.1.0", "@vueuse/core": "catalog:frontend",
"eslint": "^8.40.0", "@vueuse/nuxt": "catalog:build",
"nuxt": "^3.5.0", "eslint": "catalog:dev",
"pinia": "^2.1.1", "eslint-plugin-format": "catalog:dev",
"typescript": "^5.0.4", "nuxt": "catalog:build",
"vue-tsc": "^1.6.5" "pinia": "catalog:frontend",
"typescript": "catalog:dev",
"unocss": "catalog:build",
"vue": "catalog:frontend",
"vue-tsc": "catalog:dev"
} }
} }
-23
View File
@@ -1,23 +0,0 @@
<script setup lang="ts">
const online = useOnline()
</script>
<template>
<div>
<Logos mb-6 />
<Suspense>
<ClientOnly>
<PageView v-if="online" />
<div v-else text-gray:80>
You're offline
</div>
</ClientOnly>
<template #fallback>
<div italic op50>
<span animate-pulse>Loading...</span>
</div>
</template>
</Suspense>
<InputEntry />
</div>
</template>
+11773 -8831
View File
File diff suppressed because it is too large. Load diff
+57
View File
@@ -0,0 +1,57 @@
minimumReleaseAge: 0
shamefullyHoist: true
shellEmulator: true
strictPeerDependencies: false
autoInstallPeers: false
trustPolicy: no-downgrade
packages: []
overrides:
'@nuxt/devtools': 'catalog:build'
'@nuxt/kit': 'catalog:build'
chokidar: 'catalog:build'
nuxt: 'catalog:build'
rollup: 4.62.5
semver: 'catalog:build'
unplugin: 'catalog:build'
vite: 'catalog:build'
workbox-build: 7.4.0
catalogs:
build:
'@nuxt/devtools': ^3.4.1
'@nuxt/eslint': ^1.17.0
'@nuxt/kit': ^4.5.2
'@nuxtjs/color-mode': ^4.0.1
'@pinia/nuxt': ^1.0.2
'@unocss/eslint-config': ^66.8.1
'@unocss/nuxt': ^66.8.1
'@vite-pwa/nuxt': ^1.1.1
'@vueuse/nuxt': ^14.4.0
chokidar: ^5.0.0
nuxt: ^4.5.2
semver: ^7.8.5
unocss: ^66.8.1
unplugin: ^3.3.0
vite: ^8.2.2
dev:
'@antfu/eslint-config': ^9.3.0
'@types/node': ^26.2.0
eslint: ^10.9.0
eslint-plugin-format: ^2.0.1
typescript: ^6.0.3
vue-tsc: ^3.3.11
frontend:
'@vueuse/core': ^14.4.0
pinia: ^4.0.3
vue: ^3.5.41
icons:
'@iconify-json/carbon': ^1.2.25
'@iconify-json/twemoji': ^1.2.5
update:
ignoreDeps:
- typescript@7
allowBuilds:
esbuild: true
unrs-resolver: true
+7 -1
View File
@@ -1,3 +1,9 @@
{ {
"extends": "./.nuxt/tsconfig.json" "references": [
{ "path": "./.nuxt/tsconfig.app.json" },
{ "path": "./.nuxt/tsconfig.server.json" },
{ "path": "./.nuxt/tsconfig.shared.json" },
{ "path": "./.nuxt/tsconfig.node.json" }
],
"files": []
} }
+4 -2
View File
@@ -1,10 +1,11 @@
import { createLocalFontProcessor } from '@unocss/preset-web-fonts/local'
import { import {
defineConfig, defineConfig,
presetAttributify, presetAttributify,
presetIcons, presetIcons,
presetTypography, presetTypography,
presetUno,
presetWebFonts, presetWebFonts,
presetWind4,
transformerDirectives, transformerDirectives,
transformerVariantGroup, transformerVariantGroup,
} from 'unocss' } from 'unocss'
@@ -15,7 +16,7 @@ export default defineConfig({
['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: [
presetUno(), presetWind4(),
presetAttributify(), presetAttributify(),
presetIcons({ presetIcons({
scale: 1.2, scale: 1.2,
@@ -27,6 +28,7 @@ export default defineConfig({
serif: 'DM Serif Display', serif: 'DM Serif Display',
mono: 'DM Mono', mono: 'DM Mono',
}, },
processors: createLocalFontProcessor(),
}), }),
], ],
transformers: [ transformers: [