VITE中的环境变量和模式

明确什么是环境变量和模式

首先,明确一点,环境变量和模式是两种不同的概念

下图是模式(mode):

下面是模式(mode)为test时对应的环境变量(VITE_APP_TITLE和VITE_BASE_URL):

下面是从.env.test点击进入的文件,可以看到有VITE_APP_TITLE和VITE_BASE_URL,这些就是环境变量。

js 复制代码
# .env.test
VITE_APP_TITLE = "标题"

VITE_BASE_URL="/base_url"

内置环境变量和自定义环境变量

自定义环境变量

  1. 暴露方法:Vite 在一个特殊的 import.meta.env 对象上暴露环境变量,比如说我想访问VITE_APP_TITLE这个环境变量,那么我要通过 import.meta.env.VITE_APP_TITLE 来在代码中获取

  2. 设置方法:在.env.[mode]文件中设置,该文件位于和package.json同级文件(也就是根目录下),具体env文件详解可见超链接。

  3. 命名规则:从上面的例子可以看到自己设置的环境变量在vite中都是以VITE开头的,否则不生效哦

  4. html中引用方法:

    js 复制代码
       <div>
           <p>Using data from %VITE_APP_TITLE%</p>
       </div>

内置环境变量

js 复制代码
-   **`import.meta.env.MODE`**: {string} 应用运行的[模式](https://vitejs.cn/vite5-cn/guide/env-and-mode.html#modes)。
-   **`import.meta.env.BASE_URL`**: {string} 部署应用时的基本 URL。他由[`base` 配置项](https://vitejs.cn/vite5-cn/config/shared-options.html#base)决定。
-   **`import.meta.env.PROD`**: {boolean} 应用是否运行在生产环境(使用 `NODE_ENV='production'` 运行开发服务器或构建应用时使用 `NODE_ENV='production'` )。
-   **`import.meta.env.DEV`**: {boolean} 应用是否运行在开发环境 (永远与 `import.meta.env.PROD`相反)。
-   **`import.meta.env.SSR`**: {boolean} 应用是否运行在 [server](https://vitejs.cn/vite5-cn/guide/ssr.html#conditional-logic) 上。

模式

  1. 默认情况下,运行pnpm run dev 命令时 运行在 development (开发) 模式,而 pnpm run build 命令则运行在 production (生产) 模式。
  2. 运行pnpm run build时 可以在根目录下新建一个.env.production文件,并且在该文件中声明你想自定义的环境变量,比如:
js 复制代码
VITE_APP_TITLE = "标题"

VITE_BASE_URL="/base_url"

3.如果想设置mode为test的模式下的自定义环境变量,则在根目录下新建一个.env.test文件,并且在该文件中声明你想自定义的环境变量,比如:

js 复制代码
VITE_APP_TITLE = "标题test"

VITE_BASE_URL="/base_url"

package.json设置为

js 复制代码
    "scripts": {
        "dev": "vite",
        "build:test": "vite build --mode=test",
  },

这样 运行pnpm run build:test命令时,就能通过**import.meta.env.VITE_APP_TITLE** 来获取定义的环境变量。

.env 文件

vite根据mode加载.env.[mode]文件获取在该文件中声明的环境变量

js 复制代码
.env                # 所有情况下都会加载
.env.local          # 所有情况下都会加载,但会被 git 忽略
.env.[mode]         # 只在指定模式下加载
.env.[mode].local   # 只在指定模式下加载,但会被 git 忽略

结束

文章如果有不正确的地方,欢迎批评指正。

本文章参考: vite的环境变量和模式

相关推荐
__zRainy__19 小时前
uni-app 全局容器实战系列(一):全局容器的实现
uni-app·vite
发现一只大呆瓜1 天前
Vite凭什么这么快?3分钟带你彻底搞懂 Vite 热更新的幕后黑手
前端·面试·vite
Hello--_--World2 天前
利用CDN进行首屏优化。能不能看CDN与本地服务器谁快用谁?
运维·服务器·前端·javascript·vite
Hello--_--World2 天前
为什么 用vite进行分包后,可以通过 浏览器强制缓存 提高性能?路由懒加载进行的分包与 vite进行的分包有什么不同?
前端·javascript·缓存·vite
Patrick_Wilson4 天前
Vite+ vs nvm:一次「全局 CLI 失踪」事故引出的 Node 工具链选型
node.js·vite·前端工程化
真夜4 天前
开发正常但生产异常的 Bug:Vite manualChunks 循环依赖导致 ReferenceError
前端·前端框架·vite
豹哥学前端4 天前
前端工程化实战:从包管理到 Vite 配置,一套下来全明白
前端·javascript·vite
天渺工作室7 天前
构建完自动打包压缩,一个插件搞定 Vite / Webpack / Rollup / ESBuild
webpack·vite·rollup.js
Hello--_--World8 天前
Vite:什么是bundleless?哪些要打包,哪些不要打包?依赖预构建是什么?依赖预构建如何减少网络请求的?esbuild 又是什么?
前端·javascript·webpack·vite
VillenK9 天前
版本依赖问题:vite-plugin-dts@3.1.0 与 jiti 的兼容性
前端·typescript·vite