Coder Social home page Coder Social logo

vite-register's Introduction

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

When should I use vite-register over Vitest, or vice-versa ?

  • If you want a test framework, use Vitest.
  • If you need Jest features (snapshot, mocking, etc.), use Vitest.
  • If package size really matters, use vite-register.
  • If you want something actively maintained by Vite members, use Vitest.
  • If migrating tests becomes an issue, use vite-register.
  • If you really can't upgrade to Node >=v14, use vite-register.

Support Jest ?

Jest currently doesn't support hooks (facebook/jest#11295). If you need Jest unique features, you're better off switching to Vitest.

License

MIT

vite-register's People

Contributors

tommywalkie avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Forkers

czottmann

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.