vite-register

Use Vite env variables inside Node scripts and tests runners via a require hook.


Keywords
vite, env, register, import, meta, uvu, mocha, dotenv, import-meta, require-hook, test
License
MIT
Install
npm install vite-register@0.0.2

Documentation

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.

  • Support import.meta.env.MODE
  • Support import.meta.env.DEV
  • Support import.meta.env.PROD
  • Support import.meta.env.SSR (defaults to false)
  • Support import.meta.env.BASE_URL
  • Support loading variables
    • from a .env file
    • from a .env.local file
    • from a .env.[mode] file
    • from a .env.[mode].local file
  • Support <UserConfig>.envPrefix (defaults to VITE_)
  • 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

↪️ mochajs/mocha

Can be combined with esbuild-runner for TypeScript/JSX/ESM support.

mocha -r esbuild-runner/register -r vite-register [pattern]

uvu

↪️ lukeed/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 on vm, see facebook/jest#11295.

License

MIT