添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
任性的镜子  ·  加油站会被淘汰吗·  5 月前    · 
读研的人字拖  ·  pq – libpq wrapper ...·  6 月前    · 
愤怒的佛珠  ·  JSF and and Faces ...·  6 月前    · 
踢足球的洋葱  ·  Values for nested ...·  11 月前    · 
Skip to content

Env Variables and Modes

Env Variables

Vite exposes env variables on the special import.meta.env object, which are statically replaced at build time. Some built-in variables are available in all cases:

  • import.meta.env.MODE : {string} the mode the app is running in.

  • import.meta.env.BASE_URL : {string} the base url the app is being served from. This is determined by the base config option .

  • import.meta.env.PROD : {boolean} whether the app is running in production (running the dev server with NODE_ENV='production' or running an app built with NODE_ENV='production' ).

  • import.meta.env.DEV : {boolean} whether the app is running in development (always the opposite of import.meta.env.PROD )

  • import.meta.env.SSR : {boolean} whether the app is running in the server .

.env Files

Vite uses dotenv to load additional environment variables from the following files in your environment directory :

Env Loading Priorities

An env file for a specific mode (e.g. .env.production ) will take higher priority than a generic one (e.g. .env ).

In addition, environment variables that already exist when Vite is executed have the highest priority and will not be overwritten by .env files. For example, when running VITE_SOME_KEY=123 vite build .

.env files are loaded at the start of Vite. Restart the server after making changes.

Loaded env variables are also exposed to your client source code via import.meta.env as strings.

To prevent accidentally leaking env variables to the client, only variables prefixed with VITE_ are exposed to your Vite-processed code. e.g. for the following env variables:

Only VITE_SOME_KEY will be exposed as import.meta.env.VITE_SOME_KEY to your client source code, but DB_PASSWORD will not.

Env parsing

As shown above, VITE_SOME_KEY is a number but returns a string when parsed. The same would also happen for boolean env variables. Make sure to convert to the desired type when using it in your code.

Also, Vite uses dotenv-expand to expand variables out of the box. To learn more about the syntax, check out their docs .

Note that if you want to use $ inside your environment value, you have to escape it with \ .

If you want to customize the env variables prefix, see the envPrefix option.

SECURITY NOTES

  • .env.*.local files are local-only and can contain sensitive variables. You should add *.local to your .gitignore to avoid them being checked into git.

  • Since any variables exposed to your Vite source code will end up in your client bundle, VITE_* variables should not contain any sensitive information.

IntelliSense for TypeScript

By default, Vite provides type definitions for import.meta.env in vite/client.d.ts . While you can define more custom env variables in .env.[mode] files, you may want to get TypeScript IntelliSense for user-defined env variables that are prefixed with VITE_ .

To achieve this, you can create an vite-env.d.ts in src directory, then augment ImportMetaEnv like this:

If your code relies on types from browser environments such as DOM and WebWorker , you can update the lib field in tsconfig.json .

Imports will break type augmentation

If the ImportMetaEnv augmentation does not work, make sure you do not have any import statements in vite-env.d.ts . See the TypeScript documentation for more information.

HTML Env Replacement

Vite also supports replacing env variables in HTML files. Any properties in import.meta.env can be used in HTML files with a special %ENV_NAME% syntax:

If the env doesn't exist in import.meta.env , e.g. %NON_EXISTENT% , it will be ignored and not replaced, unlike import.meta.env.NON_EXISTENT in JS where it's replaced as undefined .

Given that Vite is used by many frameworks, it is intentionally unopinionated about complex replacements like conditionals. Vite can be extended using an existing userland plugin or a custom plugin that implements the transformIndexHtml hook .

Modes

By default, the dev server ( dev command) runs in development mode and the build command runs in production mode.

This means when running vite build , it will load the env variables from .env.production if there is one:

In your app, you can render the title using import.meta.env.VITE_APP_TITLE .

In some cases, you may want to run vite build with a different mode to render a different title. You can overwrite the default mode used for a command by passing the --mode option flag. For example, if you want to build your app for a staging mode:

And create a .env.staging file: