Env var in Vite at container startup
npm install vite-envs
Bundle environment variables in Vite at build time startup time!
In Vite, import.meta.env variables are set at build time with vite build.
However we often want to enable the person deploying the app to define those values, we don't want to re build every time we need
to change a configuration. vite-envs facilitates this by enabling to:
``bash`
docker run --env FOO="xyz" my-org/my-vite-app
Then, access FOO:
- In the TypeScript code as import.meta.env.FOOindex.html
- In , as
This eliminates the need to rebuild each time you wish to change some configuration.
More importantly, it allows you to ship a customizable Docker image of your webapp!
Features
- š§ Effortless setup: Integrates smoothly, works as your already used to, does not disrupt your Storybook.
- š The
VITE_ prefix isn't required.
- š”ļø Type-safe: Type definition for your import.meta.env. Hot reload enabled!
- š index.html: Use your envs in your HTML file. Example
- š§ Supports computation of env values at build time.
- āļø (Optional) enables to use EJS expressions in your index.html.
- š Secure: Only injects environment variables explicitly defined in the .env file.
You can also choose to declare your variables in another file like .env.declaration if .env is gitignored in your project. How it works
vite-envs is a Vite plugin.
When you build your app (vite build) it generate a dist/vite-envs.sh script.
When executed, this script updates the dist/index.html by injecting the environment variables
defined on the host running the script. So, to make the dynamic injection of environment variables take place, you simply need to run the
vite-envs.sh script
before starting your web server.
In practice, the diff that you would need to apply to your Dockerfile would look something like this: Dockerfile
`diff
-CMD ["nginx", "-g", "daemon off;"]
+ENTRYPOINT sh -c "./vite-envs.sh && nginx -g 'daemon off;'"
` Types
Unrelated to the dynamic injection of environment variables,
vite-envs also brings strict typing for import.meta.env`. švite-envs-starterš

Onyxia is a Vite app distributed as a Docker image.
Sysadmins that would like to deploy Onyxia on their infrastructure can simply use
the official Docker image and provide relevant environnement variable to adjust the theme/branding of the website to their usecase as
documented here.
Here are two deployment example: