{"id":22812,"library":"vite-plugin-require-transform","title":"vite-plugin-require-transform","description":"A Vite plugin that converts CommonJS require() calls to ES module import syntax at build time, enabling codebases that use require() to work with Vite's ESM-native dev server. Current stable version: 1.0.21. Released as needed, with occasional minor updates. Key differentiators: supports complex cases like ternary expressions, method calls on require results, and custom import path handlers; does not require source code changes; filters by file regex (default .ts/.tsx) to avoid unnecessary transformations. Alternatives like @originjs/vite-plugin-commonjs or vite-plugin-commonjs-externals may handle broader CJS interop, but this plugin is minimal and focused specifically on require → import.","status":"active","version":"1.0.21","language":"javascript","source_language":"en","source_url":"https://github.com/WarrenJones/vite-plugin-require-transform","tags":["javascript","vite","vite-plugin","require","typescript"],"install":[{"cmd":"npm install vite-plugin-require-transform","lang":"bash","label":"npm"},{"cmd":"yarn add vite-plugin-require-transform","lang":"bash","label":"yarn"},{"cmd":"pnpm add vite-plugin-require-transform","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"plugin runs as a Vite plugin","package":"vite","optional":false}],"imports":[{"note":"Package exports a CommonJS default export via ESM wrapper; named import { requireTransform } will not work.","wrong":"const requireTransform = require('vite-plugin-require-transform')","symbol":"default (requireTransform)","correct":"import requireTransform from 'vite-plugin-require-transform'"},{"note":"TypeScript type only; not available at runtime. Use 'import type' to avoid bundling issues.","wrong":"import { VitePluginRequireTransformParamsType } from 'vite-plugin-require-transform'","symbol":"VitePluginRequireTransformParamsType","correct":"import type { VitePluginRequireTransformParamsType } from 'vite-plugin-require-transform'"},{"note":"Without options, default fileRegex matches .ts and .tsx only; for JavaScript or other files you must override.","wrong":"plugins: [requireTransform()]","symbol":"plugin usage in vite.config.ts","correct":"plugins: [requireTransform({ fileRegex: /.[jt]sx?$/ })]"}],"quickstart":{"code":"// vite.config.ts\nimport { defineConfig } from 'vite';\nimport requireTransform from 'vite-plugin-require-transform';\n\nexport default defineConfig({\n  plugins: [\n    requireTransform({\n      fileRegex: /\\.(js|ts|jsx|tsx)$/,\n      importPrefix: '__req_',\n      importPathHandler: (path: string) => path.replace(/\\?.*$/, '')\n    })\n  ]\n});","lang":"typescript","description":"Basic configuration of vite-plugin-require-transform in vite.config.ts, showing all available options with default overrides."},"warnings":[{"fix":"Replace dynamic require() with dynamic import() or static import.","message":"Dynamic require() (e.g., require(variable)) is not supported and will throw at runtime.","severity":"breaking","affected_versions":"all"},{"fix":"Explicitly set fileRegex: /\\.(js|ts|jsx|tsx)$/ in plugin options.","message":"Transformation only applies to files matching fileRegex (default .ts/.tsx). JS files are ignored unless you set fileRegex to include them.","severity":"gotcha","affected_versions":"all"},{"fix":"Assign require() result to a const even in conditional branches to ensure correct import extraction.","message":"When require is used with a ternary or conditional, the resulting import may produce named exports that don't exist, causing runtime errors.","severity":"gotcha","affected_versions":"all"},{"fix":"","message":"No known deprecated patterns yet; package is still actively maintained.","severity":"deprecated","affected_versions":"none"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Rewrite to const x = require('x'); x.y.z; or use importPathHandler to simplify the expression.","cause":"Plugin tries to transform require inside nested expressions it cannot handle (e.g., require('x').y.z).","error":"SyntaxError: Unexpected token '.' (or similar parsing errors)"},{"fix":"Use 'import requireTransform from 'vite-plugin-require-transform''.","cause":"Importing the plugin incorrectly (e.g., as named export instead of default).","error":"Error: The plugin 'vite-plugin-require-transform' doesn't seem to be a valid Vite plugin."},{"fix":"Check that fileRegex includes the file's extension and that plugin is in the plugins array.","cause":"Plugin did not transform the file (file not matching regex or plugin not added).","error":"Uncaught ReferenceError: require is not defined"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}