{"id":22436512,"url":"https://github.com/tommywalkie/vite-register","last_synced_at":"2026-03-05T04:34:29.451Z","repository":{"id":57393250,"uuid":"422110694","full_name":"tommywalkie/vite-register","owner":"tommywalkie","description":"Use Vite env variables inside Node scripts and test runners via a require hook.","archived":false,"fork":false,"pushed_at":"2022-01-13T14:14:28.000Z","size":28,"stargazers_count":2,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-06T22:40:26.774Z","etag":null,"topics":["dotenv","import-meta","mocha","require-hook","test","uvu","vite"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tommywalkie.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-10-28T07:42:36.000Z","updated_at":"2023-02-07T11:46:54.000Z","dependencies_parsed_at":"2022-08-27T13:34:56.760Z","dependency_job_id":null,"html_url":"https://github.com/tommywalkie/vite-register","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tommywalkie/vite-register","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tommywalkie%2Fvite-register","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tommywalkie%2Fvite-register/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tommywalkie%2Fvite-register/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tommywalkie%2Fvite-register/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tommywalkie","download_url":"https://codeload.github.com/tommywalkie/vite-register/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tommywalkie%2Fvite-register/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30110441,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T03:40:26.266Z","status":"ssl_error","status_checked_at":"2026-03-05T03:39:15.902Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dotenv","import-meta","mocha","require-hook","test","uvu","vite"],"created_at":"2024-12-06T00:08:03.768Z","updated_at":"2026-03-05T04:34:29.435Z","avatar_url":"https://github.com/tommywalkie.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003evite-register\u003c/h1\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://npmjs.org/package/vite-register\"\u003e\n    \u003cimg src=\"https://badgen.now.sh/npm/v/vite-register\" alt=\"version\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/tommywalkie/vite-register/actions/workflows/ci.yml\"\u003e\n    \u003cimg src=\"https://github.com/tommywalkie/vite-register/actions/workflows/ci.yml/badge.svg\" alt=\"CI\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://npmjs.org/package/vite-register\"\u003e\n    \u003cimg src=\"https://badgen.now.sh/npm/dm/vite-register\" alt=\"downloads\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://packagephobia.now.sh/result?p=vite-register\"\u003e\n    \u003cimg src=\"https://packagephobia.now.sh/badge?p=vite-register\" alt=\"install size\" /\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003cp\u003eUse Vite \u003ca href=\"https://vitejs.dev/guide/env-and-mode.html\"\u003eenv variables\u003c/a\u003e  inside Node scripts and test runners via a require hook.\u003c/p\u003e\n\u003c/div\u003e\n\n\u003cbr/\u003e\n\n## Install\n\n```bash\nnpm install --save-dev vite-register\n```\n\n## Features\n\nPretty much [like Vite does](https://vitejs.dev/guide/env-and-mode.html#production-replacement), vite-register will statically replace variables.\n\n- [x] Support `import.meta.env.MODE`\n- [x] Support `import.meta.env.DEV`\n- [x] Support `import.meta.env.PROD`\n- [ ] Support `import.meta.env.SSR` (defaults to `false`)\n- [x] Support `import.meta.env.BASE_URL`\n- [x] Support loading variables\n  - [x] from a `.env` file\n  - [x] from a `.env.local` file\n  - [x] from a `.env.[mode]` file\n  - [x] from a `.env.[mode].local` file\n- [x] Support `\u003cUserConfig\u003e.envPrefix` (defaults to `VITE_`)\n- [x] Support `\u003cUserConfig\u003e.envDir` (defaults to project root)\n\n## Usage\n\nThis hook can be used with the Node CLI and some test runners supporting hooks via the `-r` (`--require`) option.\n\n```bash\n# Assuming envPrefix =\u003e 'VITE_'\necho 'VITE_FOO=\"hello world\"' \u003e .env\necho 'console.log(import.meta.env.VITE_FOO);' \u003e index.js\nnode -r vite-register index.js\n\u003e hello world\n```\n\nvite-register can look into Vite configuration files (`vite.config.[ext]`) and retrieve [`base`](https://vitejs.dev/config/#base) and [`mode`](https://vitejs.dev/config/#mode).\n\nIn most cases, TypeScript/JSX/ESM support in configuration files and scripts can be provided by third-party hooks like [tsm](https://github.com/lukeed/tsm), [esbuild-runner](https://github.com/folke/esbuild-runner) or [esbuild-register](https://github.com/egoist/esbuild-register), before vite-register hook.\n\n```bash\nnode -r esbuild-runner/register -r vite-register index.ts\n```\n\n### Mocha\n\n↪️ \u003ca href=\"https://github.com/mochajs/mocha\"\u003emochajs/mocha\u003c/a\u003e\n\nCan be combined with [esbuild-runner](https://github.com/folke/esbuild-runner) for TypeScript/JSX/ESM support.\n\n```bash\nmocha -r esbuild-runner/register -r vite-register [pattern]\n```\n\n### uvu\n\n↪️ \u003ca href=\"https://github.com/lukeed/uvu\"\u003elukeed/uvu\u003c/a\u003e\n\nCan be combined with [tsm](https://github.com/lukeed/tsm) or [esbuild-runner](https://github.com/folke/esbuild-runner) for TypeScript/JSX/ESM support.\n\n```bash\nuvu -r tsm -r vite-register [pattern]\n```\n\n## FAQ\n\n### When should I use vite-register over [Vitest](https://github.com/vitest-dev/vitest), or vice-versa ?\n\n- If you want a test framework, **use Vitest**.\n- If you need Jest features (snapshot, mocking, etc.), **use Vitest**.\n- If package size [really matters](https://packagephobia.com/result?p=vitest%2C+vite-register), **use vite-register**.\n- If you want something actively maintained by Vite members, **use Vitest**.\n- If migrating tests becomes an issue, **use vite-register**.\n- If you _really_ can't upgrade to Node \u003e=v14, **use vite-register**.\n\n### Support Jest ?\n\nJest currently doesn't support hooks ([facebook/jest#11295](https://github.com/facebook/jest/issues/11295)). If you need Jest unique features, you're better off switching to [Vitest](https://github.com/vitest-dev/vitest).\n\n## License\n\nMIT \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftommywalkie%2Fvite-register","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftommywalkie%2Fvite-register","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftommywalkie%2Fvite-register/lists"}