跳至内容

配置 Vite

当从命令行运行 vite 时,Vite 会自动尝试解析名为 vite.config.js 的配置文件,该文件位于 项目根目录 中(也支持其他 JS 和 TS 扩展名)。

最基本的配置文件如下所示

js
// vite.config.js
export default {
  // config options
}

请注意,即使项目没有使用原生 Node ESM(例如 package.json 中的 type: "module"),Vite 也支持在配置文件中使用 ES 模块语法。在这种情况下,配置文件会在加载前自动预处理。

您还可以使用 --config CLI 选项显式指定要使用的配置文件(相对于 cwd 解析)

bash
vite --config my-config.js

配置 Intellisense

由于 Vite 附带 TypeScript 类型定义,因此您可以利用 IDE 的 Intellisense 和 jsdoc 类型提示。

js
/** @type {import('vite').UserConfig} */
export default {
  // ...
}

或者,您可以使用 defineConfig 辅助函数,该函数应该可以提供 Intellisense,而无需 jsdoc 注解。

js
import { defineConfig } from 'vite'

export default defineConfig({
  // ...
})

Vite 也支持 TypeScript 配置文件。您可以使用 vite.config.ts 和上面的 defineConfig 辅助函数,或者使用 satisfies 运算符。

ts
import type { UserConfig } from 'vite'

export default {
  // ...
} satisfies UserConfig

条件配置

如果配置需要根据命令(servebuild)、使用的 模式、是否为 SSR 构建(isSsrBuild)或是否正在预览构建(isPreview)有条件地确定选项,则可以导出一个函数。

js
export default 
defineConfig
(({
command
,
mode
,
isSsrBuild
,
isPreview
}) => {
if (
command
=== 'serve') {
return { // dev specific config } } else { // command === 'build' return { // build specific config } } })

需要注意的是,在 Vite 的 API 中,command 值在开发期间为 serve(在 cli 中 vitevite devvite serve 是别名),在构建生产环境时为 build (vite build)。

isSsrBuildisPreview 是额外的可选标志,用于区分 buildserve 命令的类型。一些加载 Vite 配置的工具可能不支持这些标志,并将传递 undefined。因此,建议使用与 truefalse 的显式比较。

异步配置

如果配置需要调用异步函数,则可以导出一个异步函数。并且此异步函数也可以通过 defineConfig 传递,以获得更好的 Intellisense 支持。

js
export default 
defineConfig
(async ({
command
,
mode
}) => {
const
data
= await asyncFunction()
return { // vite config } })

在配置中使用环境变量

环境变量可以像往常一样从 process.env 中获取。

请注意,Vite 默认不加载 .env 文件,因为要加载的文件只能在评估 Vite 配置后才能确定,例如,rootenvDir 选项会影响加载行为。但是,如果需要,您可以使用导出的 loadEnv 辅助函数加载特定的 .env 文件。

js
import { 
defineConfig
,
loadEnv
} from 'vite'
export default
defineConfig
(({
mode
}) => {
// Load env file based on `mode` in the current working directory. // Set the third parameter to '' to load all env regardless of the // `VITE_` prefix. const
env
=
loadEnv
(
mode
,
process
.
cwd
(), '')
return { // vite config
define
: {
__APP_ENV__
:
JSON
.
stringify
(
env
.
APP_ENV
),
}, } })

根据 MIT 许可证发布。 (ccee3d7c)