一直习惯用"cross-env来设置环境变量。最近接手了个vite的,但是上个人没有区分test和prod环境,所以需要自己处理下

按照习惯,我就先npm i cross-env,然后设置命令行如下:

"dev:test": "cross-env VITE_NODE_ENV=development vite",
"dev:prod": "cross-env VITE_NODE_ENV=production vite",

然后在项目文件里面用process.env.VITE_NODE_ENV == "production",

在nodejs配置文件里面也用process.env.VITE_NODE_ENV == "production"

开发环境运行都没问题

打包后就不行了,找不到这个process.env.VITE_NODE_ENV

vite要求项目文件里面用import.meta.env来读取变量,且变量名字用VITE开头

并且命令行用--mode [变量值] 的方式来这种变量

对应跟目录下的

.env.[变量值]文件,在这个文件里面设置变量

例如

vite build --mode test对应文件.env.test

.env.test文件输入如下内容

VITE_NODE_ENV=production

项目文件里面就可以使用以下代码来读取变量

import.meta.env.VITE_NODE_ENV == 'production' ?"生产":"测试"

但是nodejs的配置文件无法使用import.meta.env.VITE_NODE_ENV,依旧需要使用cross-env的方式来配置_(¦3」∠)_,然后我的package.json脚本命令行就变成了这样了

  "dev:test": "cross-env VITE_NODE_ENV=development vite --mode development",
      "dev:prod": "cross-env VITE_NODE_ENV=production vite  --mode production",

既有corss-env又有--mode

以上内容参考:Env Variables and Modes | Vite

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐