node package manager
We need your input. Help make JavaScript better: Take the 2017 JavaScript Ecosystem survey »



CommonJS and ender-inspired require/provide with events

$ npm install cmon

API (0.6)


  • cmon(id) Delegate to cmon.require(id).
  • cmon(id, value) Delegate to cmon.provide(id, value).
  • cmon(id, value, guard) Delegate to cmon.require(id).
  • cmon(fn) Call fn in the root scope and receive (cmon).

.require / .provide

At runtime in a browser cmon claims the global require/provide if unclaimed. Otherwise access them as methods:

  • cmon.require(id) Get a module that was provided via cmon.provide.
  • cmon.require(deps, fn) Async (fn applies with deps when available).
  • cmon.provide(id, value) Provide a module.
  • cmon.provide.on(id, fn) Attach a handler to run anytime id is provided.
  •, fn) Attach a 1-time handler to run the next time id is provided.
  •, fn) Remove a handler.
  • Remove all id handlers.
  • cmon.provide.emit(id) Manually trigger active id handlers.
  •, fn?, timeout?) Attach a 1-time handler runs when id is available—async.

.claim / .unclaim

  • cmon.claim(id, value, target?) Expose a module to the root or to target.
  • cmon.unclaim(id, value, target?) Safely unexpose a module that was exposed via claim.


  • cmon.noConflict() Unclaim require/provide
  • cmon.noConflict(true) Unclaim require/provide/cmon
  • cmon.noConflict(callback) Unclaim require/provide/cmon


Contribute by making edits in /src or reporting issues.

$ npm install
$ grunt jshint:src


Fund development with tips to @ryanve =)

License: MIT

Copyright (C) 2013 by Ryan Van Etten