全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 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 需添加类型声明
  • 适合版本号等固定信息注入

📝 发现内容有误?点击此处直接编辑

← 上一篇 模块脚本引入
下一篇 → 共享配置抽取
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库