{"id":22612,"library":"vite-plugin-codegen","title":"Vite Plugin Codegen","description":"A Vite plugin (v4+) that generates virtual modules at bundle time, useful for injecting configuration, metadata, or generated code without a separate build step. Current stable version is 2.1.0, with monthly releases. Ships TypeScript types. Supports ESM-only; designed specifically for Vite 4+. Key differentiator: generates virtual modules on-the-fly, eliminating the need for pre-build scripts or file I/O.","status":"active","version":"2.1.0","language":"javascript","source_language":"en","source_url":"https://github.com/FlorianRappl/codegen-js","tags":["javascript","vite","codegen","virtual","module","plugin","typescript"],"install":[{"cmd":"npm install vite-plugin-codegen","lang":"bash","label":"npm"},{"cmd":"yarn add vite-plugin-codegen","lang":"bash","label":"yarn"},{"cmd":"pnpm add vite-plugin-codegen","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency – plugin designed for Vite 4+","package":"vite","optional":false}],"imports":[{"note":"Named export only; default export is not available.","wrong":"import codegen from 'vite-plugin-codegen'","symbol":"codegen","correct":"import { codegen } from 'vite-plugin-codegen'"},{"note":"Type import for TypeScript users.","symbol":"CodegenOptions","correct":"import type { CodegenOptions } from 'vite-plugin-codegen'"},{"note":"Type import for defining virtual modules.","symbol":"CodegenModule","correct":"import type { CodegenModule } from 'vite-plugin-codegen'"}],"quickstart":{"code":"import { codegen } from 'vite-plugin-codegen';\nimport { defineConfig } from 'vite';\n\nexport default defineConfig({\n  plugins: [\n    codegen({\n      modules: [\n        {\n          id: 'my-module',\n          generate: () => `export const message = 'Hello, World!';`\n        }\n      ]\n    })\n  ]\n});\n\n// In your application code, import the virtual module:\n// import { message } from 'virtual:my-module';","lang":"typescript","description":"Shows how to configure the plugin in vite.config.ts and use a generated virtual module in app code."},"warnings":[{"fix":"Use named import: import { codegen } from 'vite-plugin-codegen'.","message":"v2.0.0 moved core logic to 'codegen-lib' and restructured exports; default import removed.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Use 'virtual:' prefix for all generated module ids.","message":"Virtual module IDs must be prefixed with 'virtual:' or the plugin will not resolve them.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Use ESM imports or ensure your project is configured for ESM.","message":"Only ESM output is supported; CJS require() will fail.","severity":"gotcha","affected_versions":">=2.0.0"},{"fix":"Update plugin configuration to new object format.","message":"The old 'generate' function signature from v1 is removed; use the new object format with 'id' and 'generate'.","severity":"deprecated","affected_versions":">=2.0.0"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Add 'virtual:' prefix to the module id.","cause":"Module ID missing the required prefix.","error":"Error: [vite-plugin-codegen] Virtual module id must start with 'virtual:'"},{"fix":"Change to named import: import { codegen } from 'vite-plugin-codegen'.","cause":"Using default import (common mistake after v2 breaking change).","error":"TypeError: codegen is not a function"},{"fix":"Switch to ESM imports or set project type to module in package.json.","cause":"CJS require() used for ESM-only package.","error":"Error: require() of ES Module not supported"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}