CommonJS


CommonJS is a project to standardize the module ecosystem for JavaScript outside of web browsers.
CommonJS's specification of how modules should work is widely used today for server-side JavaScript with Node.js. It is also used for browser-side JavaScript, but that code must be packaged with a transpiler since browsers don't support CommonJS. The other major module specification in use is the ECMAScript modules specification. CommonJS can be recognized by the use of the require function and module.exports, while ES modules use import and export statements for similar functionality.

History

The project was started by Mozilla engineer Kevin Dangoor in January, 2009 and initially named ServerJS.
In August 2009, the project was renamed CommonJS to show the broader applicability of the APIs. Specifications are created and approved in an open process. A specification is only considered final after it has been finished by multiple implementations. CommonJS is not affiliated with the Ecma International group TC39 working on ECMAScript, but some members of TC39 participate in the project.

Specifications

The list of specifications includes:

Proposals

The proposals cover much more than modules. They intend to define a set of APIs that are useful both for non-web JavaScript implementations, with standardized package names to provide interoperability within the ecosystem. This goal sometimes overlaps with that of TC39, and parts such as Promises have indeed made it into ECMAScript itself.
The part after the slash is the version. When a proposal is in contention, each individual proposal is assigned a new letter. When the main direction is known it starts being assigned numeric versions.