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



Namespace where can-* packages are registered


can-namespace exports an object that can be used to ensure only one version of a module is loaded in an app.

For example, if you have a module can-unicorn that you want to make sure is only loaded a single time, you can use can-namespace:

var namespace = require('can-namespace');
var unicorn = {
    // ... 
if (namespace.unicorn) {
    throw new Error("You can't have two versions of can-unicorn, check your dependencies");
} else {
    module.exports = namespace.unicorn = unicorn;

Any module requiring can-namespace will receive the same module because only one version of can-namespace will ever be published.