{"id":22913,"library":"vite-plugin-virtual","title":"vite-plugin-virtual","description":"Vite plugin providing virtual modules with HMR invalidation support. Version 0.5.0, actively maintained, works with Vite 2–7. Unlike @rollup/plugin-virtual, this plugin integrates with Vite's Hot Module Replacement and allows updating or invalidating virtual module content at runtime during development. Supports ESM and TypeScript via ambient type declarations.","status":"active","version":"0.5.0","language":"javascript","source_language":"en","source_url":"https://github.com/patak-js/vite-plugin-virtual","tags":["javascript","typescript"],"install":[{"cmd":"npm install vite-plugin-virtual","lang":"bash","label":"npm"},{"cmd":"yarn add vite-plugin-virtual","lang":"bash","label":"yarn"},{"cmd":"pnpm add vite-plugin-virtual","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency – the plugin requires Vite's dev server and plugin API","package":"vite","optional":false}],"imports":[{"note":"ESM-only package; cannot be used with require() in Node. Use import statement.","wrong":"const virtual = require('vite-plugin-virtual')","symbol":"default","correct":"import virtual from 'vite-plugin-virtual'"},{"note":"Named export, not default. Require destructuring.","wrong":"import updateVirtualModule from 'vite-plugin-virtual'","symbol":"updateVirtualModule","correct":"import { updateVirtualModule } from 'vite-plugin-virtual'"},{"note":"Named export, not default. Require destructuring.","wrong":"import invalidateVirtualModule from 'vite-plugin-virtual'","symbol":"invalidateVirtualModule","correct":"import { invalidateVirtualModule } from 'vite-plugin-virtual'"}],"quickstart":{"code":"import virtual from 'vite-plugin-virtual'\n\nexport default {\n  plugins: [\n    virtual({\n      'virtual:module': `export default { hello: 'world' }`,\n      'virtual:config': { hello: 'world' }\n    })\n  ]\n}\n\n// In your source files:\n// import obj from 'virtual:config'\n// console.log(obj)","lang":"javascript","description":"Creates virtual modules 'virtual:module' and 'virtual:config' and registers them as a Vite plugin."},"warnings":[{"fix":"Use import syntax instead of require().","message":"The plugin uses ESM-only distribution. Attempting to require() it will fail with ERR_REQUIRE_ESM.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Use destructured import: import { updateVirtualModule } from 'vite-plugin-virtual'.","message":"updateVirtualModule and invalidateVirtualModule are exported as named exports only; there is no default export for them.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Prefix virtual modules with 'virtual:' to avoid collisions.","message":"Virtual module names must be unique across the plugin instance and not conflict with other vite-resolved modules.","severity":"gotcha","affected_versions":">=0.0.0"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Set package.json type field to \"module\", rename file to .mjs, or use a bundler that supports ES modules.","cause":"Using ESM import in a CommonJS context without configuring type:module in package.json or using .mjs extension.","error":"SyntaxError: Cannot use import statement outside a module"},{"fix":"Ensure you are using import virtual from 'vite-plugin-virtual' (default import).","cause":"Called the default import incorrectly (e.g., used require() or imported a named export as default).","error":"TypeError: virtual is not a function"},{"fix":"Run 'npm install -D vite-plugin-virtual' in your project directory.","cause":"Package not installed or not in node_modules.","error":"Cannot find module 'vite-plugin-virtual'"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}