chore: migrate to Bun, update deps and add Nuxt Fonts

- Replace pnpm with Bun (bun.lock, remove pnpm-lock.yaml)
- Add @nuxt/fonts module and configure Iconify icons
- Add NUXT_OG_IMAGE_SECRET for multi-instance OG image signing
- Update dependencies to latest versions
- Simplify Tailwind font configuration
- Add trustedDependencies and overrides for unhead packages
This commit is contained in:
2026-07-20 03:05:03 +08:00
parent 4408f48cbd
commit 1cf3fce70e
8 changed files with 2886 additions and 14820 deletions

View File

@@ -29,4 +29,7 @@ ADMIN_EMAIL=admin@example.com
SENDER_EMAIL=sender@example.com SENDER_EMAIL=sender@example.com
# 是否启用SSL # 是否启用SSL
SMTP_SECURE=true SMTP_SECURE=true
# OG Image Secret用于多实例部署签名
NUXT_OG_IMAGE_SECRET=your-og-image-secret

View File

@@ -1,5 +1,9 @@
@import "tailwindcss"; @import "tailwindcss";
@theme {
--font-sans: "Inter", ui-sans-serif, system-ui, sans-serif;
}
@layer base { @layer base {
html { html {
height: 100%; height: 100%;
@@ -19,7 +23,7 @@
margin: 0; margin: 0;
min-height: 100%; min-height: 100%;
background: radial-gradient(circle at 20% 20%, #1b2b4b, #0f1629); background: radial-gradient(circle at 20% 20%, #1b2b4b, #0f1629);
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", sans-serif; font-family: "Inter", ui-sans-serif, system-ui, sans-serif;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
} }

2829
bun.lock Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -14,8 +14,20 @@ export default defineNuxtConfig({
"@nuxtjs/sitemap", "@nuxtjs/sitemap",
"@nuxt/icon", "@nuxt/icon",
"@nuxtjs/seo", "@nuxtjs/seo",
"@nuxt/fonts",
], ],
icon: {
provider: "iconify",
collections: ["lucide", "simple-icons"],
},
ogImage: {
security: {
secret: process.env.NUXT_OG_IMAGE_SECRET || "3ecc76b00dd73f5124438ab14204714ce74ae172b2c5e57dce3ba2244b41aad9",
},
},
// 禁用 Vue Router 的非关键警告 // 禁用 Vue Router 的非关键警告
vue: { vue: {
compilerOptions: { compilerOptions: {
@@ -111,4 +123,4 @@ export default defineNuxtConfig({
wakatimeApiUrl: process.env.WAKATIME_API_URL ?? "https://wakatime.com/api/v1", wakatimeApiUrl: process.env.WAKATIME_API_URL ?? "https://wakatime.com/api/v1",
}, },
}, },
}); });

View File

@@ -19,33 +19,45 @@
}, },
"dependencies": { "dependencies": {
"@giscus/vue": "^3.1.1", "@giscus/vue": "^3.1.1",
"@jaseeey/vue-umami-plugin": "^1.4.0", "@jaseeey/vue-umami-plugin": "^1.5.1",
"@nuxt/icon": "^2.2.0", "@nuxt/fonts": "0.14.0",
"@nuxt/icon": "^2.3.1",
"@nuxt/image": "2.0.0", "@nuxt/image": "2.0.0",
"@nuxt/ui": "^4.5.0", "@nuxt/ui": "^4.10.0",
"@nuxtjs/icon": "^2.6.0", "@nuxtjs/robots": "^6.1.3",
"@nuxtjs/robots": "^5.6.7", "@nuxtjs/seo": "5.3.3",
"@nuxtjs/seo": "3.3.0", "@nuxtjs/sitemap": "^8.2.3",
"@nuxtjs/sitemap": "^7.5.2", "@takumi-rs/core": "^2.3.0",
"nodemailer": "^7.0.12", "nodemailer": "^9.0.3",
"nuxt": "^4.2.2", "nuxt": "^4.5.0",
"vite-tsconfig-paths": "^6.0.4" "vite-tsconfig-paths": "^6.1.1"
}, },
"devDependencies": { "devDependencies": {
"@iconify-json/fa6-brands": "^1.2.6", "@iconify-json/fa6-brands": "^1.2.6",
"@iconify-json/fa6-solid": "^1.2.4", "@iconify-json/fa6-solid": "^1.2.4",
"@iconify-json/simple-icons": "^1.2.66", "@iconify-json/lucide": "^1.2.118",
"@nuxt/eslint": "1.12.1", "@iconify-json/simple-icons": "^1.2.91",
"@tailwindcss/vite": "^4.1.18", "@nuxt/eslint": "1.16.0",
"@types/nodemailer": "^7.0.5", "@tailwindcss/vite": "^4.3.3",
"@typescript-eslint/parser": "^8.53.0", "@types/nodemailer": "^8.0.1",
"autoprefixer": "^10.4.23", "@typescript-eslint/parser": "^8.64.0",
"eslint": "^9.39.2", "autoprefixer": "^10.5.4",
"eslint": "^10.7.0",
"eslint-config-prettier": "^10.1.8", "eslint-config-prettier": "^10.1.8",
"eslint-plugin-prettier": "^5.5.5", "eslint-plugin-prettier": "^5.5.6",
"prettier": "^3.8.0", "prettier": "^3.9.5",
"prettier-eslint": "^16.4.2", "prettier-eslint": "^17.1.1",
"tailwindcss": "^4.1.18", "tailwindcss": "^4.3.3",
"typescript": "^5.9.3" "typescript": "^7.0.2"
},
"trustedDependencies": [
"@parcel/watcher",
"core-js",
"unrs-resolver"
],
"overrides": {
"@unhead/vue": "3.2.1",
"unhead": "3.2.1",
"@unhead/bundler": "3.2.1"
} }
} }

14778
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,9 +0,0 @@
allowBuilds:
'@parcel/watcher': true
core-js: true
esbuild: true
sharp: true
unrs-resolver: true
vue-demi: true
ignoredBuiltDependencies:
- core-js

View File

@@ -20,14 +20,7 @@ export default {
"text-muted": "rgb(104, 120, 152)", "text-muted": "rgb(104, 120, 152)",
}, },
fontFamily: { fontFamily: {
sans: [ sans: ['"Inter"', "ui-sans-serif", "system-ui", "sans-serif"],
'"Inter"',
"system-ui",
"-apple-system",
"BlinkMacSystemFont",
'"Segoe UI"',
"sans-serif",
],
}, },
spacing: { spacing: {
"safe-x": "max(1rem, env(safe-area-inset-left))", "safe-x": "max(1rem, env(safe-area-inset-left))",