{"id":22811,"library":"vite-plugin-require-support","title":"vite-plugin-require-support","description":"Vite plugin enabling require() syntax in Vite projects by transforming CommonJS require calls to ESM imports. Current stable version 1.6.1, with frequent bug-fix releases. Key differentiator: specifically for Vite, unlike generic bundler plugins. It handles string literal and template literal require paths, generates hashed variable names to avoid collisions, and supports complex export patterns. Alternatives: @originjs/vite-plugin-commonjs or using esbuild's require polyfill.","status":"active","version":"1.6.1","language":"javascript","source_language":"en","source_url":"https://github.com/chenjiezi/vite-plugin-require-support","tags":["javascript","vite","require","typescript"],"install":[{"cmd":"npm install vite-plugin-require-support","lang":"bash","label":"npm"},{"cmd":"yarn add vite-plugin-require-support","lang":"bash","label":"yarn"},{"cmd":"pnpm add vite-plugin-require-support","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"Default export; package is ESM-only from v1.1.16 due to 'type':'module' in package.json.","wrong":"const requireSupport = require('vite-plugin-require-support')","symbol":"requireSupport","correct":"import requireSupport from 'vite-plugin-require-support'"},{"note":"Must import default export at top level, not inline require.","wrong":"export default defineConfig({ plugins: [require('vite-plugin-require-support')()] })","symbol":"plugin","correct":"import requireSupport from 'vite-plugin-require-support'; export default defineConfig({ plugins: [requireSupport()] })"},{"note":"Option is named 'filters' (a regex), not 'include'. Default filters: /.ts$|.js$|.tsx$|.vue$/.","wrong":"requireSupport({ include: /.ts$/ })","symbol":"filters","correct":"requireSupport({ filters: /.ts$|.js$/ })"},{"note":"Package ships TypeScript types, but type import is optional when using as plugin.","wrong":"import requireSupport from 'vite-plugin-require-support' (if types-only)","symbol":"types","correct":"import type requireSupport from 'vite-plugin-require-support'"}],"quickstart":{"code":"// vite.config.ts\nimport { defineConfig } from 'vite';\nimport requireSupport from 'vite-plugin-require-support';\n\nexport default defineConfig({\n  plugins: [\n    requireSupport({\n      filters: /.ts$|.js$|.tsx$|.vue$/\n    })\n  ]\n});\n\n// some-module.ts\nconst fs = require('fs');\nconst path = require('path');\nconst config = require('./config.json');\nconsole.log(fs.readFileSync(path.join(__dirname, 'file.txt'), 'utf8'));","lang":"typescript","description":"Basic setup: add plugin to Vite config, then use require() in TypeScript/JavaScript modules to import Node built-ins and local files."},"warnings":[{"fix":"Use string literals for require() paths; avoid runtime-concatenated strings.","message":"Plugin transforms require() at build time; dynamic require() with template literals may fail if the path is not statically analyzable.","severity":"gotcha","affected_versions":"*"},{"fix":"Use ES module syntax in your config: import requireSupport from 'vite-plugin-require-support';","message":"Package is ESM-only since v1.1.16. require() in Node.js scripts (e.g., vite.config.cjs) will fail unless using dynamic import or .mjs extension.","severity":"breaking","affected_versions":">=1.1.16"},{"fix":"Pass a regex literal: filters: /\\.js$|\\mjs$/ or new RegExp('.js$').","message":"filters option expects a RegExp, not a string or array of strings. Incorrect type may silently fail to match any files.","severity":"gotcha","affected_versions":"*"},{"fix":"Use 'filters' instead.","message":"Option 'include' was used in early versions but renamed to 'filters'. Using 'include' may be ignored.","severity":"deprecated","affected_versions":"<1.0.0"},{"fix":"For complex CJS modules, consider alternative bundler setups or migrate to ESM.","message":"Plugin may not handle all CommonJS patterns like module.exports assignments or circular dependencies. Test thoroughly with your codebase.","severity":"gotcha","affected_versions":"*"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Change your config file extension to .mjs or use dynamic import: const requireSupport = (await import('vite-plugin-require-support')).default;","cause":"Using require() on an ESM-only package (v1.1.16+).","error":"Error [ERR_REQUIRE_ESM]: require() of ES Module"},{"fix":"Ensure the plugin is added to vite.config and filters match your file extensions.","cause":"Vite runs in ESM mode by default; require is not available globally without plugin transformation.","error":"require is not defined"},{"fix":"Replace with static require (string literal) or import().","cause":"Dynamic template literal require() where path cannot be statically analyzed.","error":"Dynamic require of \"...\" is not supported"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}