{"maintainers":[{"name":"thlorenz","email":"thlorenz@gmx.de"}],"dist-tags":{"latest":"0.2.0"},"author":{"name":"Thorsten Lorenz","email":"thlorenz@gmx.de","url":"http://thlorenz.com"},"description":"Dedupes node modules as they are being required  which works even when dependencies are linked via ln -s or npm link.","readme":"# dynamic-dedupe\n\nDedupes node modules on the fly which works even when dependencies are linked via ln -s or npm link.\n\n### Not deduped \n\nLoads `foo.js` module only twice.\n\n```js\nvar foo1 = require('./pack1/dep-uno/foo');\nvar foo2 = require('./pack2/dep-uno/foo');\n\nconsole.log(foo1.foo);\nconsole.log(foo2.foo);\n\n// =>\n// loading foo from /Users/thlorenz/dev/projects/dynamic-dedupe/example/pack1/dep-uno\n// loading foo from /Users/thlorenz/dev/projects/dynamic-dedupe/example/pack2/dep-uno\n// foobiloo\n// foobiloo\n```\n\n### Deduped\n\nLoads `foo.js` module only once.\n\n```js\nvar dedupe = require('../');\ndedupe.activate();\n\nvar foo1 = require('./pack1/dep-uno/foo');\nvar foo2 = require('./pack2/dep-uno/foo');\n\nconsole.log(foo1.foo);\nconsole.log(foo2.foo);\n\n// =>\n// loading foo from /Users/thlorenz/dev/projects/dynamic-dedupe/example/pack1/dep-uno\n// foobiloo\n// foobiloo\n```\n\n\n## Installation\n\n    npm install dynamic-dedupe\n\n## API\n\n###*dedupe.activate([ext])*\n\n```\n/**\n * Activates deduping for files with the given extension.\n * \n * @name activate\n * @function\n * @param ext {String} (optional) extension for which to activate deduping (default: '.js')\n */\n```\n\n###*dedupe.deactivate([ext])*\n\n```\n/**\n * Deactivates deduping files with the given extension.\n * \n * @name deactivate\n * @function\n * @param ext {String} (optional) extension for which to activate deduping (default: '.js')\n */\n```\n\n###*dedupe.reset()*\n\n```\n/**\n * Clears the registry that contains previously loaded modules.\n * \n * @name reset\n * @function\n */\n```\n\n## License\n\nMIT\n","repository":{"type":"git","url":"git://github.com/thlorenz/dynamic-dedupe.git"},"users":{"majj":true,"wenbing":true},"versions":{"0.1.0":{"name":"dynamic-dedupe","version":"0.1.0","description":"Dedupes node modules on the fly which works even when dependencies are linked via ln -s or npm link.","main":"index.js","scripts":{"test-main":"tap test/*.js","test-0.8":"nave use 0.8 npm run test-main","test-0.10":"nave use 0.10 npm run test-main","test-all":"npm run test-main && npm run test-0.8 && npm run test-0.10","test":"if [ -e $TRAVIS ]; then npm run test-all; else npm run test-main; fi"},"repository":{"type":"git","url":"git://github.com/thlorenz/dynamic-dedupe.git"},"homepage":"https://github.com/thlorenz/dynamic-dedupe","dependencies":{"xtend":"~2.0.6"},"devDependencies":{"nave":"~0.4.3","tap":"~0.4.3"},"keywords":[],"author":{"name":"Thorsten Lorenz","email":"thlorenz@gmx.de","url":"http://thlorenz.com"},"license":{"type":"MIT","url":"https://github.com/thlorenz/dynamic-dedupe/blob/master/LICENSE"},"engine":{"node":">=0.6"},"readme":"# dynamic-dedupe\n\nDedupes node modules on the fly which works even when dependencies are linked via ln -s or npm link.\n\n### Not deduped \n\nLoads `foo.js` module only twice.\n\n```js\nvar foo1 = require('./pack1/dep-uno/foo');\nvar foo2 = require('./pack2/dep-uno/foo');\n\nconsole.log(foo1.foo);\nconsole.log(foo2.foo);\n\n// =>\n// loading foo from /Users/thlorenz/dev/projects/dynamic-dedupe/example/pack1/dep-uno\n// loading foo from /Users/thlorenz/dev/projects/dynamic-dedupe/example/pack2/dep-uno\n// foobiloo\n// foobiloo\n```\n\n### Deduped\n\nLoads `foo.js` module only once.\n\n```js\nvar dedupe = require('../');\ndedupe.activate();\n\nvar foo1 = require('./pack1/dep-uno/foo');\nvar foo2 = require('./pack2/dep-uno/foo');\n\nconsole.log(foo1.foo);\nconsole.log(foo2.foo);\n\n// =>\n// loading foo from /Users/thlorenz/dev/projects/dynamic-dedupe/example/pack1/dep-uno\n// foobiloo\n// foobiloo\n```\n\n\n## Installation\n\n    npm install dynamic-dedupe\n\n## API\n\n###*dedupe.activate([ext])*\n\n```\n/**\n * Activates deduping for files with the given extension.\n * \n * @name activate\n * @function\n * @param ext {String} (optional) extension for which to activate deduping (default: '.js')\n */\n```\n\n###*dedupe.deactivate([ext])*\n\n```\n/**\n * Deactivates deduping files with the given extension.\n * \n * @name deactivate\n * @function\n * @param ext {String} (optional) extension for which to activate deduping (default: '.js')\n */\n```\n\n###*dedupe.reset()*\n\n```\n/**\n * Clears the registry that contains previously loaded modules.\n * \n * @name reset\n * @function\n */\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/thlorenz/dynamic-dedupe/issues"},"_id":"dynamic-dedupe@0.1.0","dist":{"shasum":"0a9a18cec4561efa59b370e6b6f6e2a972f35cbb","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/dynamic-dedupe/-/dynamic-dedupe-0.1.0.tgz"},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"thlorenz","email":"thlorenz@gmx.de"},"maintainers":[{"name":"thlorenz","email":"thlorenz@gmx.de"}],"directories":{}},"0.1.1":{"name":"dynamic-dedupe","version":"0.1.1","description":"Dedupes node modules as they are being required  which works even when dependencies are linked via ln -s or npm link.","main":"index.js","scripts":{"test-main":"tap test/*.js","test-0.8":"nave use 0.8 npm run test-main","test-0.10":"nave use 0.10 npm run test-main","test-all":"npm run test-main && npm run test-0.8 && npm run test-0.10","test":"if [ -e $TRAVIS ]; then npm run test-all; else npm run test-main; fi"},"repository":{"type":"git","url":"git://github.com/thlorenz/dynamic-dedupe.git"},"homepage":"https://github.com/thlorenz/dynamic-dedupe","dependencies":{"xtend":"~2.0.6"},"devDependencies":{"nave":"~0.4.3","tap":"~0.4.3"},"keywords":["dedupe","npm","require","extension","link"],"author":{"name":"Thorsten Lorenz","email":"thlorenz@gmx.de","url":"http://thlorenz.com"},"license":{"type":"MIT","url":"https://github.com/thlorenz/dynamic-dedupe/blob/master/LICENSE"},"engine":{"node":">=0.6"},"readme":"# dynamic-dedupe\n\nDedupes node modules as they are being required  which works even when dependencies are linked via ln -s or npm link.\n\n### Not deduped \n\nLoads `foo.js` module only twice.\n\n```js\nvar foo1 = require('./pack1/dep-uno/foo');\nvar foo2 = require('./pack2/dep-uno/foo');\n\nconsole.log(foo1.foo);\nconsole.log(foo2.foo);\n\nconsole.log(foo1 === foo2);\n\n// =>\n// loading foo from /Users/thlorenz/dev/projects/dynamic-dedupe/example/pack1/dep-uno\n// loading foo from /Users/thlorenz/dev/projects/dynamic-dedupe/example/pack2/dep-uno\n// foobiloo\n// foobiloo\n// false\n```\n\n### Deduped\n\nLoads `foo.js` module only once.\n\n```js\nvar dedupe = require('../');\ndedupe.activate();\n\nvar foo1 = require('./pack1/dep-uno/foo');\nvar foo2 = require('./pack2/dep-uno/foo');\n\nconsole.log(foo1.foo);\nconsole.log(foo2.foo);\n\nconsole.log(foo1 === foo2);\n\n// =>\n// loading foo from /Users/thlorenz/dev/projects/dynamic-dedupe/example/pack1/dep-uno\n// foobiloo\n// foobiloo\n// true\n```\n\nHere instead of loading `pack2/dep-uno/foo1.js` we will get a reference to the exports of `pack1/dep-uno/foo`.js`\nreturned.\n\n\n## Why?\n\nIn some cases an app may be split into multiple parts that need to get the same instance of a common dependency (i.e.\nHandlebars). This will work once you run `npm dedupe` from the main package. However once you try linking to a\ndependency via `npm link` or just `ln -s` it breaks.\n\nThis is where dynamic-dedupe comes in since it dedupes your modules as they are being required. Just **make sure that\nyou are using the exact same version** of the packages whose modules you dedupe in order for this to work reliably.\n\n## Installation\n\n    npm install dynamic-dedupe\n\n## API\n\n###*dedupe.activate([ext])*\n\n```\n/**\n * Activates deduping for files with the given extension.\n * \n * @name activate\n * @function\n * @param ext {String} (optional) extension for which to activate deduping (default: '.js')\n */\n```\n\n###*dedupe.deactivate([ext])*\n\n```\n/**\n * Deactivates deduping files with the given extension.\n * \n * @name deactivate\n * @function\n * @param ext {String} (optional) extension for which to activate deduping (default: '.js')\n */\n```\n\n###*dedupe.reset()*\n\n```\n/**\n * Clears the registry that contains previously loaded modules.\n * \n * @name reset\n * @function\n */\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/thlorenz/dynamic-dedupe/issues"},"_id":"dynamic-dedupe@0.1.1","dist":{"shasum":"17a6c760c42b7c9a8a0fa028134545ae1d12832f","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/dynamic-dedupe/-/dynamic-dedupe-0.1.1.tgz"},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"thlorenz","email":"thlorenz@gmx.de"},"maintainers":[{"name":"thlorenz","email":"thlorenz@gmx.de"}],"directories":{}},"0.2.0":{"name":"dynamic-dedupe","version":"0.2.0","description":"Dedupes node modules as they are being required  which works even when dependencies are linked via ln -s or npm link.","main":"index.js","scripts":{"test-main":"tap test/*.js","test-0.8":"nave use 0.8 npm run test-main","test-0.10":"nave use 0.10 npm run test-main","test-all":"npm run test-main && npm run test-0.8 && npm run test-0.10","test":"if [ -e $TRAVIS ]; then npm run test-all; else npm run test-main; fi"},"repository":{"type":"git","url":"git://github.com/thlorenz/dynamic-dedupe.git"},"homepage":"https://github.com/thlorenz/dynamic-dedupe","dependencies":{"xtend":"~2.0.6"},"devDependencies":{"nave":"~0.4.3","tap":"~0.4.3"},"keywords":["dedupe","npm","require","extension","link"],"author":{"name":"Thorsten Lorenz","email":"thlorenz@gmx.de","url":"http://thlorenz.com"},"license":{"type":"MIT","url":"https://github.com/thlorenz/dynamic-dedupe/blob/master/LICENSE"},"engine":{"node":">=0.6"},"readme":"# dynamic-dedupe\n\nDedupes node modules as they are being required  which works even when dependencies are linked via ln -s or npm link.\n\n### Not deduped \n\nLoads `foo.js` module only twice.\n\n```js\nvar foo1 = require('./pack1/common/dep-uno/foo');\nvar foo2 = require('./pack2/common/dep-uno/foo');\n\nconsole.log(foo1.foo);\nconsole.log(foo2.foo);\n\nconsole.log(foo1 === foo2);\n\n// =>\n// loading foo from /Users/thlorenz/dev/projects/dynamic-dedupe/example/pack1/common/dep-uno\n// loading foo from /Users/thlorenz/dev/projects/dynamic-dedupe/example/pack2/common/dep-uno\n// foobiloo\n// foobiloo\n// false\n```\n\n### Deduped\n\nLoads `foo.js` module only once.\n\n```js\nvar dedupe = require('../');\ndedupe.activate();\n\nvar foo1 = require('./pack1/dep-uno/foo');\nvar foo2 = require('./pack2/dep-uno/foo');\n\nconsole.log(foo1.foo);\nconsole.log(foo2.foo);\n\nconsole.log(foo1 === foo2);\n\n// =>\n// loading foo from /Users/thlorenz/dev/projects/dynamic-dedupe/example/pack1/common/dep-uno\n// foobiloo\n// foobiloo\n// true\n```\n\nHere instead of loading `pack2/dep-uno/foo1.js` we will get a reference to the exports of `pack1/dep-uno/foo`.js`\nreturned.\n\n\n## Why?\n\nIn some cases an app may be split into multiple parts that need to get the same instance of a common dependency (i.e.\nHandlebars). This will work once you run `npm dedupe` from the main package. However once you try linking to a\ndependency via `npm link` or just `ln -s` it breaks.\n\nThis is where dynamic-dedupe comes in since it dedupes your modules as they are being required. Just **make sure that\nyou are using the exact same version** of the packages whose modules you dedupe in order for this to work reliably.\n\n## Installation\n\n    npm install dynamic-dedupe\n\n## API\n\n###*dedupe.activate([ext, subdirs])*\n\n```\n/**\n * Activates deduping for files with the given extension.\n * \n * @name activate\n * @function\n * @param ext {String} (optional) extension for which to activate deduping (default: '.js')\n * @param subdirs {Number} (optional) how many subdirs right above the module\n *    have to be the same in order for it to be considered identical  (default: 2)\n *\n *  Example: sudirs: 2 -- x/foo/bar/main.js === y/foo/bar/main.js\n *                        x/boo/bar/main.js !== y/foo/bar/main.js\n */\n```\n\n###*dedupe.deactivate([ext])*\n\n```\n/**\n * Deactivates deduping files with the given extension.\n * \n * @name deactivate\n * @function\n * @param ext {String} (optional) extension for which to activate deduping (default: '.js')\n */\n```\n\n###*dedupe.reset()*\n\n```\n/**\n * Clears the registry that contains previously loaded modules.\n * \n * @name reset\n * @function\n */\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/thlorenz/dynamic-dedupe/issues"},"_id":"dynamic-dedupe@0.2.0","dist":{"shasum":"50f7c28684831ecf1c170aab67a1d5311cdd76ce","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/dynamic-dedupe/-/dynamic-dedupe-0.2.0.tgz"},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"thlorenz","email":"thlorenz@gmx.de"},"maintainers":[{"name":"thlorenz","email":"thlorenz@gmx.de"}],"directories":{}}},"name":"dynamic-dedupe","time":{"modified":"2013-08-21T19:39:01.076Z","created":"2013-08-21T18:21:03.034Z","0.1.0":"2013-08-21T18:21:03.932Z","0.1.1":"2013-08-21T18:39:08.423Z","0.2.0":"2013-08-21T19:39:01.076Z"}}