forked from kirklin/boot-nuxt3
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnuxt.config.ts
103 lines (95 loc) · 2.37 KB
/
nuxt.config.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import AutoImport from "unplugin-auto-import/vite";
import Components from "unplugin-vue-components/vite";
import { NaiveUiResolver } from "unplugin-vue-components/resolvers";
import { pwa } from "./setting/pwa";
import { appDescription } from "./constants/index";
import { pagesExtend } from "./pages-extend";
import { pagesGenerateExclude } from "./pages-exclude";
export default defineNuxtConfig({
modules: [
"@vueuse/nuxt",
"@unocss/nuxt",
"@pinia/nuxt",
"@nuxtjs/i18n",
"@pinia-plugin-persistedstate/nuxt",
"@nuxtjs/color-mode",
"@vite-pwa/nuxt",
],
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,
},
vite: {
vue: {
script: {
defineModel: true,
propsDestructure: true,
},
},
optimizeDeps: {
include:
process.env.NODE_ENV === "development"
? ["naive-ui", "vueuc", "date-fns-tz/formatInTimeZone"]
: [],
},
plugins: [
AutoImport({
imports: [
{
"naive-ui": ["useDialog", "useMessage", "useNotification", "useLoadingBar"],
},
],
}),
Components({
resolvers: [NaiveUiResolver()],
}),
],
},
i18n: {
vueI18n: "./i18n.config.ts",
},
css: [
"@kirklin/reset-css/kirklin.css",
],
colorMode: {
classSuffix: "",
},
hooks: {
"pages:extend": pages => pagesExtend(pages),
},
nitro: {
esbuild: {
options: {
target: "esnext",
},
},
prerender: {
crawlLinks: false,
routes: ["/"],
ignore: pagesGenerateExclude,
},
},
app: {
rootId: "app",
head: {
viewport: "width=device-width,initial-scale=1",
link: [
{ rel: "icon", href: "/favicon.ico", sizes: "any" },
{ rel: "icon", type: "image/svg+xml", href: "/nuxt.svg" },
{ rel: "apple-touch-icon", href: "/apple-touch-icon.png" },
],
meta: [
{ name: "viewport", content: "width=device-width, initial-scale=1" },
{ name: "description", content: appDescription },
{ name: "apple-mobile-web-app-status-bar-style", content: "black-translucent" },
],
},
},
pwa,
devtools: {
enabled: true,
},
});