-
Notifications
You must be signed in to change notification settings - Fork 0
/
vite.config.js
122 lines (94 loc) · 4.39 KB
/
vite.config.js
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
// If we run the command line `vite`
// Vite automatically parse this file if we create it
// i can use option param `--config` to set the configuration file
// `vite --config my-config.js`
// Vite automatically use ESModule syntax to parse the configuration file
// even though we don't set `"type":"module"` in package.json
// 优雅配置vite,方式一
// 使用jsdoc注解
// vite self contain ts type
// i can use the smart tip provide by IDE and jsdoc
// 这是jsdoc注解
/** @type {import('vite').UserConfig} */
export default {
/** 共享选项 */
// 项目根目录(index.html所在位置)
// root: process.cwd(),
// 该目录中的文件,将在构建期间复制到 `outDir` 的根目录
// 原汁原味地复制,没有转换
publicDir: "public", // 默认
// 模式
// development 开发模式 production 生产模式
mode: 'development', // 需要手动设置
// 用到的插件
// plugins: [],
// 配置esbuild
// esbuild: {}
// 加载 `.env` 文件的目录
envDir: 'root',
/** 构建选项 */
build: {
// 最终构建产物,使用的模块语法
target: "modules", // 默认
// 自动注入到每个index.html的入口。Vite自动计算要预加载的模块。
// 非HTML入口模式、Library模式,请看文档
modulePreload: true, // 默认
// 相对于根目录`root`,指定输出路径
outDir: 'dist', // 默认
// 相对于ourDir,指定静态资源存放路径
// Library模式下,请看文档
assetsDir: 'assets', // 默认
// 设置资源阈值,小于阈值的导入或引用资源将内联为base64编码
// 可以避免http请求
// 设置为0会禁用此配置
// 可以设置回调函数,根据布尔值选择是否启用。 ((filePath: string, content: Buffer) => boolean | undefined)
assetsInlineLimit: 4096, // 默认4KB
// css代码拆分
// 如果启用,异步chunk中导入的css将内联到异步thunk本身
// 如果禁用,将项目中所有css提取到一个css文件
cssCodeSplit: true, //默认
// 是否启用sourcemap
// 请见文档,有蛮多可选的项
sourcemap: true, //默认false
// 自定义rollup打包配置,将与vite内部的rollup默认配置合并
// rollupOptions: {
// }
// 构建为库模式Library模式
// 详情见文档
// lib: {}
// 启用/禁用混淆压缩
// 使用其他方案,详情见文档
minify: 'esbuild', // 默认,且比terser快20-40倍,压缩率只差1%-2%
// 将 `publicDir` 目录中的所有文件复制到 `outDir` 中
copyPublicDir: true, //默认
},
/** 依赖优化选项 */
optimizeDeps: {
// 默认情况下,vite抓取 index.html 来检测需要预构建的依赖项。(忽略了node_modules、build.outDir、__tests__ 和 coverage)
// 如果制定了 build.rollupOptions.input,Vite 将转而去抓取这些入口点。
// 如果这两者都不合你意,则可以使用此选项指定自定义条目——该值需要遵循 fast-glob 模式 ,或者是相对于 Vite 项目根目录的匹配模式数组。当显式声明了 optimizeDeps.entries 时默认只有 node_modules 和 build.outDir 文件夹会被忽略。如果还需忽略其他文件夹,你可以在模式列表中使用以 ! 为前缀的、用来匹配忽略项的模式。如果你不想忽略 node_modules 和 build.outDir,你可以选择直接使用字符串路径(不使用 fast-glob 模式)。
// string | string[]
entries: './public/index.html',
// 预构建中,强制排除的依赖项
// string[]
// exclude: []
// 默认情况下,不在 node_modules 中的,链接的包不会被预构建。使用此选项可强制预构建链接的包。
// string[]
// include: []
// true 强制依赖预构建,忽略之前缓存或优化过的依赖
// boolean
// force
}
}
// 优雅配置vite,方式二
// 使用工具函数
// import { defineConfig } from 'vite'
// export default defineConfig({
// // ...
// })
// 优雅配置vite,方式三
// 在 `vite.config.ts` 使用ts配置文件
// import type { UserConfig } from 'vite'
// export default {
// // ...
// } satisfies UserConfig