vite-register
Use Vite env variables inside Node scripts and test runners via a require hook.
Install
npm install --save-dev vite-register
Features
Pretty much like Vite does, vite-register will statically replace variables.
- [x] Support
import.meta.env.MODE
- [x] Support
import.meta.env.DEV
- [x] Support
import.meta.env.PROD
- [ ] Support
import.meta.env.SSR
(defaults tofalse
) - [x] Support
import.meta.env.BASE_URL
- [x] Support loading variables
- [x] from a
.env
file - [x] from a
.env.local
file - [x] from a
.env.[mode]
file - [x] from a
.env.[mode].local
file
- [x] from a
- [x] Support
<UserConfig>.envPrefix
(defaults toVITE_
) - [x] Support
<UserConfig>.envDir
(defaults to project root)
Usage
This hook can be used with the Node CLI and some test runners supporting hooks via the -r
(--require
) option.
# Assuming envPrefix => 'VITE_'
echo 'VITE_FOO="hello world"' > .env
echo 'console.log(import.meta.env.VITE_FOO);' > index.js
node -r vite-register index.js
> hello world
vite-register can look into Vite configuration files (vite.config.[ext]
) and retrieve base
and mode
.
In most cases, TypeScript/JSX/ESM support in configuration files and scripts can be provided by third-party hooks like tsm, esbuild-runner or esbuild-register, before vite-register hook.
node -r esbuild-runner/register -r vite-register index.ts
Mocha
Can be combined with esbuild-runner for TypeScript/JSX/ESM support.
mocha -r esbuild-runner/register -r vite-register [pattern]
uvu
Can be combined with tsm or esbuild-runner for TypeScript/JSX/ESM support.
uvu -r tsm -r vite-register [pattern]
FAQ
-
Support Jest? Jest currently implements its own
require
(no hooks support) based onvm
, see facebook/jest#11295.
License
MIT