starwait/nuxt.config.ts

139 lines
3.8 KiB
TypeScript

// 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,
},
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: 'fade',
mode: 'out-in',
type: 'transition', // 明确指定动画类型
duration: {
enter: 200,
leave: 500
},
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'
],
},
},
})
// 首次启动浏览器
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)
}
}
}