// https://nuxt.com/docs/api/configuration/nuxt-config // 每次热更新都会执行defineNuxtConfig import {exec} from "node:child_process"; import open, {apps} from "open"; import type {AddressInfo} from "node:net"; export default defineNuxtConfig({ compatibilityDate: '2024-11-01', devtools: { enabled: true }, modules: ['@nuxt/eslint', '@nuxtjs/tailwindcss'], devServer: { host: '0.0.0.0', port: 3000, }, features: { devLogs: 'silent' // 这是默认值,确保它没有被设置为 true,日志区分server和client, false为不在client打印 }, css: [ '~/assets/css/style.css', '~/assets/css/font.css', '~/assets/css/value.css', '~/assets/css/iconfont.css', '~/assets/css/transitions.css', ], app:{ head:{ link: [ { // LXGW WenKai 落霞孤鹜 rel: "stylesheet", href: 'https://chinese-fonts-cdn.deno.dev/packages/lxgwwenkai/dist/LXGWWenKai-Regular/result.css' }, { // Huiwen-mincho 汇文明朝体 rel: "stylesheet", href: 'https://chinese-fonts-cdn.deno.dev/packages/hwmct/dist/%E6%B1%87%E6%96%87%E6%98%8E%E6%9C%9D%E4%BD%93/result.css' // article { // font-family:'Huiwen-mincho'; // font-weight:'400' // }; }, ] }, layoutTransition:{ name: 'indexFade', mode: 'out-in', type: 'transition', // 明确指定动画类型 duration: { enter: 300, leave: 300 }, appear: true }, }, hooks: { 'listen': (server) => { startBroswer(server.address()) }, }, runtimeConfig: { redis: { host: process.env.REDIS_HOST || '127.0.0.1', port: Number(process.env.REDIS_PORT) || 6379, connectName: 'star-writ', database: Number(process.env.REDIS_DB) || 9, username: 'default', password: process.env.REDIS_PASSWORD || 'Hxl1314521', }, mysql:{ host: process.env.DB_HOST || '127.0.0.1', port: Number(process.env.DB_PORT) || 3306, user: process.env.DB_USER || 'root', password: process.env.DB_PASSWORD, database: process.env.DB_NAME || 'yuheng', // ssl: // process.env.NODE_ENV === 'production' // ? { // rejectUnauthorized: false, // servername: '', // 明确置空servername参数 // } // : null, }, jwt: { secret: process.env.JWT_SECRET || 'Hxl1314521', accessExpiresIn: process.env.JWT_ACCESS_EXPIRES || '20m', refreshExpiresIn: process.env.JWT_REFRESH_EXPIRES || '14d', whitelist: [ '/user/login', '/user/register', '/user/refreshToken', '/', // '/module', '/docs*', '/docs/json' ], }, defaultToken: { username: process.env.USERNAME || 'expressgy', nickname: process.env.PASSWORD || 'Nie', userId: '1' } }, }) // 首次启动浏览器 async function startBroswer(address: AddressInfo | string | null) { if(!process.env.START){ if (address && typeof address !== 'string') { console.log('Hooks: Listen') const host = address.address === '::' ? 'localhost' : address.address const port = address.port const url = `http://${host}:${port}`; try { await open(url, { app: { name: apps.chrome, arguments: [ '--remote-debugging-port=9222', '--auto-open-devtools-for-tabs' ] } }); } catch (e) { console.error((e as Error).message) switch (process.platform) { case 'win32': console.log('Windows 系统'); exec(`start ${url}`) break; case 'darwin': console.log('macOS 系统'); exec(`open ${url}`) break; case 'linux': console.log('Linux 系统'); exec(`xdg-open ${url}`) break; default: console.log('其他系统:', process.platform); } } process.env.START = String(true) } } }