{"id":22609,"library":"vite-plugin-cjs2esm","title":"vite-plugin-cjs2esm","description":"Vite plugin that transforms CommonJS modules to ESModules during development, enabling compatibility with Vite's native ESM dev server. As of v1.0.10, it supports static require, dynamic require, and exports conversion. It provides both a Vite plugin for transformation and an esbuild plugin for optimizeDeps. Key differentiator: specifically targets Vite dev mode, unlike general CJS-to-ESM tools. Release cadence is low. Requires Node >=14.18.0.","status":"active","version":"1.0.10","language":"javascript","source_language":"en","source_url":"https://github.com/haijie-x/vite-plugin-cjs2esm","tags":["javascript","vite","commonjs","plugin","typescript"],"install":[{"cmd":"npm install vite-plugin-cjs2esm","lang":"bash","label":"npm"},{"cmd":"yarn add vite-plugin-cjs2esm","lang":"bash","label":"yarn"},{"cmd":"pnpm add vite-plugin-cjs2esm","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"Default export, but usage is via viteCjsToEsmPlugin.vitePlugin() and viteCjsToEsmPlugin.esbuildPlugin().","wrong":"const viteCjsToEsmPlugin = require('vite-plugin-cjs2esm')","symbol":"viteCjsToEsmPlugin","correct":"import viteCjsToEsmPlugin from 'vite-plugin-cjs2esm'"},{"note":"vitePlugin is a method on the default export, not a named export.","wrong":"import { vitePlugin } from 'vite-plugin-cjs2esm'","symbol":"viteCjsToEsmPlugin.vitePlugin","correct":"import viteCjsToEsmPlugin from 'vite-plugin-cjs2esm'; const vitePlugin = viteCjsToEsmPlugin.vitePlugin(options)"},{"note":"esbuildPlugin is a method on the default export, used in optimizeDeps.","wrong":"import { esbuildPlugin } from 'vite-plugin-cjs2esm'","symbol":"viteCjsToEsmPlugin.esbuildPlugin","correct":"import viteCjsToEsmPlugin from 'vite-plugin-cjs2esm'; const esbuildPlugin = viteCjsToEsmPlugin.esbuildPlugin(options)"}],"quickstart":{"code":"import { defineConfig } from 'vite';\nimport viteCjsToEsmPlugin from 'vite-plugin-cjs2esm';\n\nexport default defineConfig({\n  plugins: [viteCjsToEsmPlugin.vitePlugin()],\n  optimizeDeps: {\n    esbuildOptions: {\n      plugins: [viteCjsToEsmPlugin.esbuildPlugin()]\n    }\n  }\n});","lang":"typescript","description":"Configures Vite to convert CommonJS modules to ESM during development using the plugin and its esbuild counterpart."},"warnings":[{"fix":"Ensure production builds properly handle CJS dependencies via Vite's pre-bundling and rollup config.","message":"The plugin transforms require() calls only in development mode; production builds are handled by Vite's default rollup/bundle process. Do not expect CJS transformations in production builds.","severity":"gotcha","affected_versions":"all"},{"fix":"Refactor synchronous code that uses dynamic require to handle asynchronous import() with .then() or await.","message":"dynamic require() calls are converted to dynamic import(). The return value becomes a Promise, which may break synchronous code expecting a direct module value.","severity":"gotcha","affected_versions":"all"},{"fix":"Check that the plugin works with your Vite version; consider using Vite's built-in pre-bundling or other plugins.","message":"If used with Vite 5+, the plugin may conflict with Vite's internal CJS handling; test compatibility.","severity":"deprecated","affected_versions":">=5.0.0"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Use: import viteCjsToEsmPlugin from 'vite-plugin-cjs2esm'; then viteCjsToEsmPlugin.vitePlugin()","cause":"Incorrect import: imported { vitePlugin } instead of default import.","error":"Error: ESM integration problem: Could not find plugin function 'vitePlugin'"},{"fix":"Run: npm install vite-plugin-cjs2esm --save-dev","cause":"Package not installed as dev dependency.","error":"Module not found: Error: Can't resolve 'vite-plugin-cjs2esm'"},{"fix":"Ensure dynamic paths are correctly formatted; test with explicit paths or adjust filter option.","cause":"The dynamic require transformation changes synchronous require to async import(), but the dynamic module path may not be resolved correctly.","error":"Cannot find module './foo' when using dynamic require with import()"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}