{"id":19350,"library":"babel-preset-vite","title":"babel-preset-vite","description":"A Babel preset that emulates Vite's non-standard functionality in non-Vite environments, primarily for testing with Node.js-based runners. Version 1.1.3 (stable) includes three plugins: babel-plugin-transform-vite-meta-env (import.meta.env), babel-plugin-transform-vite-meta-glob (import.meta.glob), and babel-plugin-transform-vite-meta-hot (import.meta.hot). Each plugin can be individually disabled via preset options. The preset ships TypeScript types and follows a monthly release cadence with bug fixes. Key differentiator: allows code using Vite-specific features to run in Jest or other Node.js test runners without modification.","status":"active","version":"1.1.3","language":"javascript","source_language":"en","source_url":"https://github.com/OpenSourceRaidGuild/babel-vite","tags":["javascript","babel","vite","preset","env","glob","hot","typescript"],"install":[{"cmd":"npm install babel-preset-vite","lang":"bash","label":"npm"},{"cmd":"yarn add babel-preset-vite","lang":"bash","label":"yarn"},{"cmd":"pnpm add babel-preset-vite","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency for Babel transformations.","package":"@babel/core","optional":false},{"reason":"Transforms import.meta.env.","package":"babel-plugin-transform-vite-meta-env","optional":false},{"reason":"Transforms import.meta.glob.","package":"babel-plugin-transform-vite-meta-glob","optional":false},{"reason":"Transforms import.meta.hot.","package":"babel-plugin-transform-vite-meta-hot","optional":false}],"imports":[{"note":"Preset is CommonJS-only; no default ESM export.","wrong":"import preset from 'babel-preset-vite'","symbol":"default","correct":"module.exports = require('babel-preset-vite')"},{"note":"Options object is the second element of a tuple, not standalone.","wrong":"{\n  \"presets\": [\"babel-preset-vite\", {}]\n}","symbol":"babel-preset-vite","correct":"{\n  \"presets\": [\"babel-preset-vite\"]\n}"},{"note":"Options must be inside an array element: [\"preset-name\", options].","wrong":"{\n  \"presets\": [\"babel-preset-vite\", { \"env\": false }]\n}","symbol":"env option","correct":"{\n  \"presets\": [[\"babel-preset-vite\", { \"env\": false }]]\n}"}],"quickstart":{"code":"// Install\nnpm install --save-dev babel-preset-vite\n\n// Configure (babel.config.js)\nmodule.exports = {\n  presets: [\n    ['babel-preset-vite', {\n      env: true,\n      glob: true,\n      hot: true\n    }]\n  ]\n};\n\n// Example code that uses Vite features\nconst env = import.meta.env.VITE_API_URL;\nconst modules = import.meta.glob('./modules/*.js');\n\n// After Babel transformation, above will be replaced with actual values or stubs.","lang":"javascript","description":"Shows installation, configuration with options, and example Vite features transformed by the preset."},"warnings":[{"fix":"Only use in development/test environments.","message":"Preset is intended for testing only; should not be relied upon in production.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Upgrade to >=1.1.0 if you need HMR stubs.","message":"v1.1.0 introduced import.meta.hot support. Older versions (<=1.0.4) do not transform import.meta.hot.","severity":"breaking","affected_versions":"<=1.0.4"},{"fix":"Switch to import.meta.glob('./*.js', { eager: true }).","message":"import.meta.globEager is deprecated in Vite 5; use import.meta.glob with { eager: true } instead.","severity":"deprecated","affected_versions":">=1.0.0"},{"fix":"Upgrade to >=1.1.2.","message":"Windows path separator backslash may be replaced with forward slash (fixed in 1.1.2).","severity":"gotcha","affected_versions":"<1.1.2"},{"fix":"Upgrade to >=1.0.3.","message":"Unknown import.meta.env keys are replaced with the full env object instead of undefined (fixed in 1.0.3).","severity":"gotcha","affected_versions":"<1.0.3"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Use [[\"babel-preset-vite\", { \"env\": true }]] instead of [\"babel-preset-vite\", { \"env\": true }].","cause":"Preset options not wrapped in an array tuple.","error":"TypeError: Cannot read property 'env' of undefined"},{"fix":"Run npm install to ensure all dependencies are installed.","cause":"Missing dependency; npm did not install all plugins.","error":"Module not found: Can't resolve 'babel-plugin-transform-vite-meta-env'"},{"fix":"Use require() or set type: 'commonjs' in babel.config.","cause":"Using ES module import with a CJS-only preset.","error":"Error: Plugin/Preset files are not allowed to export objects, only functions."},{"fix":"Add 'babel-preset-vite' to presets in babel.config.js or .babelrc.","cause":"Preset is not applied; Babel is not configured correctly.","error":"ReferenceError: import.meta is not defined"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}