Skip to content

Rollup plugin to automatically check the exports of a library for cjs-module-lexer compatibility.

License

Notifications You must be signed in to change notification settings

0no-co/rollup-plugin-cjs-check

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rollup-plugin-cjs-check

A Rollup plugin for checking CommonJS exports against cjs-module-lexer.

Why?

As Node.js defines it, CommonJS modules consist of a module.exports object which can be of any type. When importing a CommonJS, while Node.js is in ESM mode, a CommonJS module will always be reliably importable via a default import.

For modern modules, it's common to use Rollup to bundle and build both CommonJS and ECMAScript Modules (ESM) outputs for any given module. This means that to achieve compatibility between both modules either requires the module to only have a default-export, or to rely on Node.js' compatibility mode.

For better compatibility, Node.js attempts to detect the CommonJS exports of every CommonJS module that's exported. Since sometimes, especially in legacy CommonJS mode, the import of a given CommonJS module built with Rollup cannot be prevented entirely, the module has to be compatible with cjs-module-lexer.

The cjs-module-lexer library is what Node.js uses to detect exports of a given CommonJS module and hence, when choosing how to configure Rollup, the Rollup bundle outputs have to be compatible with it, or otherwise, the module's exports won't be detected.

This plugin checks that cjs-module-lexer agrees with the ECMAScript modules exports that Rollup detects.

For more information, check out the Node.js documentation on CommonJS namespaces.

Requirements

This plugin requires an LTS Node version (v14.0.0+) and Rollup v1.20.0+.

Install

npm install --save-dev rollup-plugin-cjs-check
# or
yarn add -D rollup-plugin-cjs-check
# or
pnpm add --save-dev rollup-plugin-cjs-check

Usage

Import the rollup-plugin-cjs-check plugin in your Rollup configuration file, and add it to your plugins:

import cjsCheck from 'rollup-plugin-cjs-check';

export default {
  input: 'src/index.js',
  output: {
    dir: 'output',
    format: 'cjs'
  },
  plugins: [
    cjsCheck(),
  ]
};

About

Rollup plugin to automatically check the exports of a library for cjs-module-lexer compatibility.

Resources

License

Stars

Watchers

Forks

Packages

No packages published