ENV variable replacement in HTML using Vite

Assuming a fresh install of Vite via npm create vite@latest, add a .env file to your project and add a test variable, for example…

VITE_TEST_KEY=123

Note that the the prefix VITE_ is significant, only variables prefixed in this way will be exposed to the client.

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

.env Files

For html env replacement use the syntax %ENV_NAME%. The following example shows the VITE_TEST_KEY variable in index.html, the default index file generated by vite.

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="test" content="%VITE_TEST_KEY%" />
    <link rel="icon" type="image/svg+xml" href="/vite.svg" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Vite + TS</title>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="/src/main.ts"></script>
  </body>
</html>

If you run the app you will see the generated markup has the replaced value which occurs at build time.

<meta name="test" content="123">

Nice and easy.