首页/ 学科题库/ vite/ define 定义全局常量
vite 实战教程

define 定义全局常量

2026-05-23 约 5 分钟 juanwangdev

define 定义全局常量

define 选项用于在编译时注入全局常量,变量会被直接替换为字符串值。

基础用法

JavaScript
export default defineConfig({
  define: {
    __APP_VERSION__: '1.0.0',
    __BUILD_TIME__: JSON.stringify(new Date().toISOString()),
    __DEBUG__: false
  }
})

代码中使用

JavaScript
// 代码中的变量会被替换
console.log(__APP_VERSION__)  // 替换为 "1.0.0"
console.log(__BUILD_TIME__)   // 替换为具体时间字符串

if (__DEBUG__) {
  console.log('debug mode')
}

替换规则

JavaScript
// define 配置
define: {
  VERSION: '1.0.0'
}

// 代码中
const v = VERSION

// 编译后
const v = "1.0.0"

注意:define 会直接替换变量为字符串,非字符串值需用 JSON.stringify。

与环境变量对比

对比项defineimport.meta.env
替换时机编译时运行时
命名规则无限制VITE_ 前缀
类型支持需手动序列化字符串
适用场景常量替换配置值

TypeScript 类型声明

TypeScript
// vite-env.d.ts
declare const __APP_VERSION__: string
declare const __BUILD_TIME__: string
declare const __DEBUG__: boolean

常见使用场景

JavaScript
export default defineConfig({
  define: {
    __APP_VERSION__: JSON.stringify(process.env.npm_package_version),
    __BUILD_MODE__: JSON.stringify(process.env.NODE_ENV),
    __API_BASE__: JSON.stringify(process.env.VITE_API_BASE || '/api')
  }
})

define 限制

  • 不支持表达式计算
  • 替换是静态字符串替换
  • 对象和数组需 JSON.stringify

要点总结

  • define 编译时替换变量为常量
  • 非字符串值需 JSON.stringify
  • TypeScript 需添加类型声明
  • 适合版本号等固定信息注入
想在手机上练这篇的配套题目?
使用微信 卷王开发者小程序/App,首页顶部扫一扫识别下方二维码,即可解锁本讲对应真题与错题本。
了解产品 App
← 上一篇 共享配置抽取 下一篇 → 解析选项与扩展名