Vite CommonJS Plugin

0.10.4 · active · verified Sun Apr 19

This package, `vite-plugin-commonjs`, provides a pure JavaScript implementation to process CommonJS modules within a Vite build. It enables Vite to correctly handle `require` statements, `module.exports`, and `exports` patterns often found in legacy or Node.js-focused libraries that haven't transitioned to ESM. The current stable version is 0.10.4, with frequent minor updates indicating active development and maintenance, often incorporating community contributions. Key differentiators include robust support for dynamic `require` expressions, similar to Webpack's behavior, and explicit handling for `node_modules` and aliases, which are often problematic when migrating CommonJS-heavy projects to Vite's ESM-first approach. It ships with TypeScript types for improved development experience.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to integrate `vite-plugin-commonjs` into a Vite project's configuration, showing basic options for filtering modules, handling dynamic `require`, and advanced import rules.

// vite.config.js
import { defineConfig } from 'vite'
import commonjs from 'vite-plugin-commonjs'

export default defineConfig({
  plugins: [
    commonjs({
      // Optional: filter which modules to process. By default, node_modules are excluded.
      // Example: Include a specific CommonJS library from node_modules
      filter: (id) => id.includes('node_modules/my-cjs-lib') || !id.includes('node_modules'),
      // Optional: configure dynamic require behavior
      dynamic: {
        loose: true, // Enable Webpack-like behavior for dynamic require expressions
        onFiles: (files, id) => {
          // Example: Exclude TypeScript declaration files from dynamic require resolution
          return files.filter(f => !f.endsWith('.d.ts'))
        }
      },
      // Optional: advanced configuration for import rules
      advanced: {
        importRules: 'default' // Can be 'namespace' or a function (id: string) => ImportType
      }
    }),
  ]
})

view raw JSON →