Use Vite env variables inside Node scripts and tests runners via a require hook.
npm install vite-register
bash
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 to false)
- [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] Support (defaults to VITE_)
- [x] Support (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.
`bash
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.
`bash
node -r esbuild-runner/register -r vite-register index.ts
`
$3
↪️ mochajs/mocha
Can be combined with esbuild-runner for TypeScript/JSX/ESM support.
`bash
mocha -r esbuild-runner/register -r vite-register [pattern]
`
$3
↪️ lukeed/uvu
Can be combined with tsm or esbuild-runner for TypeScript/JSX/ESM support.
`bash
uvu -r tsm -r vite-register [pattern]
`
FAQ
- Support Jest? Jest currently implements its own require (no hooks support) based on vm`, see facebook/jest#11295.