Author SHA1 Message Date
Anthony Fu 662b06fab8 wip: 2025-10-27 10:35:23 +09:00
Anthony Fu 065fc323f6 wip: 2025-10-07 15:07:03 +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 12236 additions and 8688 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@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
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@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: lts/*
cache: pnpm
- name: Install
run: pnpm install
- name: Typecheck
run: pnpm run typecheck
+3
View File
@@ -1,3 +1,4 @@
.DS_Store
node_modules
*.log
dist
@@ -5,3 +6,5 @@ dist
.nuxt
.env
.idea/
public/assets/fonts
.rolldown
+1
View File
@@ -1,3 +1,4 @@
shamefully-hoist=true
strict-peer-dependencies=false
shell-emulator=true
auto-install-peers=false
+2 -1
View File
@@ -5,6 +5,7 @@
"antfu.goto-alias",
"csstools.postcss",
"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": {
"*.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"]
+12 -17
View File
@@ -3,23 +3,19 @@
</p>
<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>
<pre align="center">
🧪 Working in Progress
</pre>
<p align="center">
<br>
<a href="https://vitesse-nuxt3.netlify.app/">🖥 Online Preview</a>
<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=""></a>
</p>
## 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.
@@ -29,9 +25,9 @@
- 🔥 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.
@@ -39,8 +35,7 @@
- 🦾 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
@@ -50,12 +45,12 @@
- [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.
- [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.
## 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
@@ -68,18 +63,18 @@ We recommend using [VS Code](https://code.visualstudio.com/) with [Volar](https:
### 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
[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
If you prefer to do it manually with the cleaner git history
```bash
npx degit antfu/vitesse-nuxt3 my-nuxt3-app
cd my-nuxt3-app
npx degit antfu/vitesse-nuxt my-nuxt-app
cd my-nuxt-app
pnpm i # If you don't have pnpm installed, run: npm install -g pnpm
```
+8 -4
View File
@@ -1,27 +1,31 @@
<script setup lang="ts">
import { appName } from '~/constants'
if (import.meta.client) {
import('@vitejs/devtools/client/inject')
}
useHead({
title: appName,
})
</script>
<template>
<VitePwaManifest />
<NuxtLayout>
<NuxtPage />
</NuxtLayout>
</template>
<style>
html, body , #__nuxt{
html,
body,
#__nuxt {
height: 100vh;
margin: 0;
padding: 0;
}
html.dark {
background: #222;
color: white;
color-scheme: dark;
}
</style>
@@ -4,13 +4,13 @@ const { count, inc, dec } = useCount()
<template>
<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 />
</button>
<div font="mono" w="15" m-auto inline-block>
{{ count }}
</div>
<button rounded-full p-2 btn @click="inc()">
<button btn p-2 rounded-full @click="inc()">
<div i-carbon-add />
</button>
</div>
File renamed without changes.
File renamed without changes.
@@ -14,7 +14,8 @@ function go() {
id="input"
v-model="name"
placeholder="What's your name?"
type="text" autocomplete="off"
type="text"
autocomplete="off"
p="x-4 y-2" m="t-5" w="250px"
text="center" bg="transparent"
border="~ rounded gray-200 dark:gray-700"
@@ -23,7 +24,7 @@ function go() {
>
<div>
<button
m-3 text-sm btn
text-sm btn m-3
:disabled="!name"
@click="go"
>
@@ -1,8 +1,8 @@
<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>
<img inline-block h-18 w-18 src="/nuxt.svg">
<span mt--2 text-green5>Nuxt 3</span>
<img h-18 w-18 inline-block src="/nuxt.svg">
<span text-green-400 mt--2>Nuxt 4</span>
</div>
<div
text="3xl gray4"
@@ -10,8 +10,8 @@
i-carbon-add transform transition-all-500 hover:rotate-135
/>
<div flex flex-col children:mx-auto>
<img inline-block h-18 w-18 src="/vite.png">
<span mt--2 text-purple5>Vitesse</span>
<img h-18 w-18 inline-block src="/vite.png">
<span text-purple-500 mt--2>Vitesse</span>
</div>
</div>
</template>
@@ -6,7 +6,7 @@ const time = useTimeAgo(() => data.value?.startAt || 0)
<template>
<div text-gray:80>
<span font-500 text-gray>{{ data?.pageview }}</span>
<span text-gray font-500>{{ data?.pageview }}</span>
page views since
<span text-gray>{{ time }}</span>
</div>
File renamed without changes.
File renamed without changes.
+1
View File
@@ -1,4 +1,5 @@
import type { ModuleOptions } from '@vite-pwa/nuxt'
import process from 'node:process'
import { appDescription, appName } from '../constants/index'
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.
```html
```vue
<script setup lang="ts">
definePageMeta({
layout: 'home',
@@ -2,7 +2,7 @@
<main class="px-10 py-20 text-center">
<slot />
<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]
</div>
</main>
+1 -1
View File
@@ -2,7 +2,7 @@
<main class="px-10 py-20 text-center">
<slot />
<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]
</div>
</main>
File renamed without changes.
+5 -5
View File
@@ -1,5 +1,5 @@
<script setup lang="ts">
const route = useRoute()
const route = useRoute<'hi-id'>()
const user = useUserStore()
const name = route.params.id
@@ -14,7 +14,7 @@ definePageMeta({
<template>
<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>
Hi,
</h3>
@@ -23,7 +23,7 @@ definePageMeta({
</div>
<template v-if="user.otherNames.length">
<p my-4 text-sm>
<div text-sm my-4>
<span op-50>Also as known as:</span>
<ul>
<li v-for="otherName in user.otherNames" :key="otherName">
@@ -32,14 +32,14 @@ definePageMeta({
</router-link>
</li>
</ul>
</p>
</div>
</template>
<Counter />
<div>
<NuxtLink
class="m-3 text-sm btn"
class="text-sm btn m-3"
to="/"
>
Back
+14
View File
@@ -0,0 +1,14 @@
<script setup lang="ts">
definePageMeta({
layout: 'home',
})
</script>
<template>
<div>
<h1 text-xl>
Demo App
</h1>
<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())
+39
View File
@@ -0,0 +1,39 @@
import { addVitePlugin, defineNuxtModule } from '@nuxt/kit'
import { DevTools } from '@vitejs/devtools'
export default defineNuxtModule({
meta: {
name: 'vite',
},
setup() {
addVitePlugin(DevTools())
addVitePlugin({
name: 'nuxt:devtools',
devtools: {
setup(ctx) {
ctx.docks.register({
id: 'vitest',
type: 'iframe',
icon: 'https://vitest.dev/logo.svg',
title: 'Vitest',
url: 'http://localhost:51204/__vitest__/#/',
})
ctx.docks.register({
id: 'nuxt',
type: 'iframe',
icon: 'https://nuxt.com/assets/design-kit/icon-green.svg',
title: 'Nuxt',
url: '/__nuxt_devtools__/client/',
})
ctx.docks.register({
id: 'unocss',
type: 'iframe',
icon: 'https://unocss.dev/logo.svg',
title: 'Vitest',
url: '/__unocss',
})
},
},
})
},
})
+8 -8
View File
@@ -1,11 +1,11 @@
[build.environment]
NODE_VERSION = "16"
[build]
publish = "dist"
command = "pnpm run build"
publish = "dist"
command = "pnpm run build"
[build.environment]
NODE_VERSION = "20"
[[redirects]]
from = "/*"
to = "/index.html"
status = 200
from = "/*"
to = "/index.html"
status = 200
+46 -33
View File
@@ -1,5 +1,4 @@
import { pwa } from './config/pwa'
import { appDescription } from './constants/index'
import { appDescription } from './app/constants/index'
export default defineNuxtConfig({
modules: [
@@ -7,36 +6,11 @@ export default defineNuxtConfig({
'@unocss/nuxt',
'@pinia/nuxt',
'@nuxtjs/color-mode',
'@vite-pwa/nuxt',
'@nuxt/eslint',
],
experimental: {
// when using generate, payload js assets included in sw precache manifest
// but missing on offline, disabling extraction it until fixed
payloadExtraction: false,
inlineSSRStyles: false,
renderJsonPayloads: true,
},
css: [
'@unocss/reset/tailwind.css',
],
colorMode: {
classSuffix: '',
},
nitro: {
esbuild: {
options: {
target: 'esnext',
},
},
prerender: {
crawlLinks: false,
routes: ['/'],
ignore: ['/hi'],
},
devtools: {
enabled: true,
},
app: {
@@ -51,13 +25,52 @@ export default defineNuxtConfig({
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ name: 'description', content: appDescription },
{ 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',
},
},
},
vite: {
build: {
rollupOptions: {
debug: {},
},
},
},
eslint: {
config: {
standalone: false,
nuxt: {
sortConfigKeys: true,
},
},
},
})
+43 -24
View File
@@ -1,33 +1,52 @@
{
"type": "module",
"private": true,
"packageManager": "pnpm@8.5.1",
"packageManager": "pnpm@10.17.1",
"scripts": {
"build": "nuxi build",
"dev": "nuxi dev",
"dev:pwa": "VITE_PLUGIN_PWA=true nuxi dev",
"build": "nuxt build",
"dev:pwa": "VITE_PLUGIN_PWA=true nuxt dev",
"dev": "nuxt dev",
"generate": "nuxt generate",
"prepare": "nuxt prepare",
"preview": "nuxt preview",
"start": "node .output/server/index.mjs",
"typecheck": "vue-tsc --noEmit",
"start:generate": "npx serve .output/public",
"lint": "eslint .",
"postinstall": "nuxi prepare",
"generate": "nuxi generate",
"start:generate": "npx serve .output/public"
"test": "vitest",
"typecheck": "nuxt typecheck"
},
"devDependencies": {
"@antfu/eslint-config": "^0.38.6",
"@iconify-json/carbon": "^1.1.16",
"@iconify-json/twemoji": "^1.1.11",
"@nuxt/devtools": "^0.4.6",
"@nuxtjs/color-mode": "^3.2.0",
"@pinia/nuxt": "^0.4.11",
"@unocss/eslint-config": "^0.51.13",
"@unocss/nuxt": "^0.51.13",
"@vite-pwa/nuxt": "^0.0.8",
"@vueuse/nuxt": "^10.1.2",
"vue-tsc": "^1.6.5",
"consola": "^3.1.0",
"eslint": "^8.40.0",
"nuxt": "^3.5.0",
"pinia": "^2.1.1",
"typescript": "^5.0.4"
"@antfu/eslint-config": "catalog:dev",
"@iconify-json/carbon": "catalog:icons",
"@iconify-json/twemoji": "catalog:icons",
"@nuxt/devtools": "catalog:build",
"@nuxt/eslint": "catalog:build",
"@nuxt/kit": "catalog:build",
"@nuxtjs/color-mode": "catalog:build",
"@pinia/nuxt": "catalog:build",
"@pnpm/logger": "catalog:",
"@unocss/eslint-config": "catalog:build",
"@unocss/nuxt": "catalog:build",
"@vite-pwa/nuxt": "catalog:build",
"@vitejs/devtools": "catalog:",
"@vitest/ui": "catalog:",
"@vueuse/core": "catalog:frontend",
"@vueuse/nuxt": "catalog:build",
"eslint": "catalog:dev",
"eslint-plugin-format": "catalog:dev",
"nuxt": "catalog:build",
"pinia": "catalog:frontend",
"typescript": "catalog:dev",
"unocss": "catalog:build",
"vitest": "catalog:",
"vue": "catalog:frontend",
"vue-tsc": "catalog:dev"
},
"resolutions": {
"@nuxt/devtools": "catalog:build",
"@nuxt/kit": "catalog:build",
"nuxt": "catalog:build",
"unplugin": "catalog:build",
"vite": "catalog:build"
}
}
-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>
+11874 -8544
View File
File diff suppressed because it is too large. Load diff
+41
View File
@@ -0,0 +1,41 @@
packages: []
catalog:
'@pnpm/logger': ^1001.0.0
'@vitejs/devtools': 0.0.0-alpha.6
'@vitest/ui': ^3.2.4
vitest: ^3.2.4
catalogs:
build:
'@nuxt/devtools': ^2.6.5
'@nuxt/eslint': ^1.9.0
'@nuxt/kit': ^4.1.2
'@nuxtjs/color-mode': ^3.5.2
'@pinia/nuxt': ^0.11.2
'@unocss/eslint-config': ^66.5.2
'@unocss/nuxt': ^66.5.2
'@vite-pwa/nuxt': ^1.0.4
'@vueuse/nuxt': ^13.9.0
nuxt: ^4.1.2
unocss: ^66.5.2
unplugin: ^2.3.10
vite: npm:rolldown-vite@^7.1.14
dev:
'@antfu/eslint-config': ^5.4.1
eslint: ^9.36.0
eslint-plugin-format: ^1.0.2
typescript: ^5.9.3
vue-tsc: ^3.1.0
frontend:
'@vueuse/core': ^13.9.0
pinia: ^3.0.3
vue: ^3.5.22
icons:
'@iconify-json/carbon': ^1.2.13
'@iconify-json/twemoji': ^1.2.4
onlyBuiltDependencies:
- '@parcel/watcher'
- esbuild
- unrs-resolver
+4 -2
View File
@@ -1,10 +1,11 @@
import { createLocalFontProcessor } from '@unocss/preset-web-fonts/local'
import {
defineConfig,
presetAttributify,
presetIcons,
presetTypography,
presetUno,
presetWebFonts,
presetWind4,
transformerDirectives,
transformerVariantGroup,
} 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'],
],
presets: [
presetUno(),
presetWind4(),
presetAttributify(),
presetIcons({
scale: 1.2,
@@ -27,6 +28,7 @@ export default defineConfig({
serif: 'DM Serif Display',
mono: 'DM Mono',
},
processors: createLocalFontProcessor(),
}),
],
transformers: [