139 lines
3.8 KiB
TypeScript
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)
|
|
}
|
|
}
|
|
}
|