{"_id":"require-tree","_rev":"32-c806176416f6760eeec4bfb76a78f819","name":"require-tree","description":"Batch module loader, require() for directories","dist-tags":{"latest":"1.1.1"},"versions":{"0.1.0":{"name":"require-tree","description":"require() whole directory trees","version":"0.1.0","main":"index.js","dependencies":{},"devDependencies":{"mocha":"","should":""},"scripts":{"test":"mocha"},"repository":{"type":"git","url":"git://github.com/ricardobeat/require-tree.git"},"author":{"name":"Ricardo Tomasi"},"license":"MIT","directories":{"test":"test"},"keywords":["require","tree","api","paths","directory","directories"],"_id":"require-tree@0.1.0","dist":{"shasum":"2b445d5e84601e56152a9ddd7a2984f4f03c9168","tarball":"https://registry.npmjs.org/require-tree/-/require-tree-0.1.0.tgz","integrity":"sha512-zfHno375vDeYK5JNSIkKnYiiuqPzzmOIoq7LXh/4biJTIgJZAfTgXYBimZwr/5j9ub8a4oB1W6vLCUHi6FAOnA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCwpTRnLmoyiBdFInN5A07puw8mjF2+HtKf1wwTgTYNFgIhAPCDaFd5mSUjZfbJ88cWrkxrcjWl8iZK13CjYx8hFGS0"}]},"maintainers":[{"name":"ricardobeat","email":"ricardobeat@gmail.com"}]},"0.2.0":{"name":"require-tree","description":"require() whole directory trees","version":"0.2.0","main":"index.js","dependencies":{},"devDependencies":{"mocha":""},"scripts":{"test":"mocha"},"repository":{"type":"git","url":"git://github.com/ricardobeat/require-tree.git"},"author":{"name":"Ricardo Tomasi"},"license":"MIT","directories":{"test":"test"},"keywords":["require","tree","api","paths","directory","directories"],"_id":"require-tree@0.2.0","dist":{"shasum":"bd73f76969dcea561579b973b9cbb07e44a58182","tarball":"https://registry.npmjs.org/require-tree/-/require-tree-0.2.0.tgz","integrity":"sha512-NJvLn4qcZlOOOy351uvLW5uDPmKo5Xd6LReGtbi8aU2koaiu+fH/5L1pUIEjRE13/NRgol6DOzCvJuNbx9r7/g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDuBYQJNwls+n86QpmZSB29fKsKhyXlNpcTcEU0XzkGrgIgM2E8RLs+jfPpcLVhUubueuE5zYERYW5jhyCvfCn7DkY="}]},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"ricardobeat","email":"ricardobeat@gmail.com"},"maintainers":[{"name":"ricardobeat","email":"ricardobeat@gmail.com"}]},"0.3.0":{"name":"require-tree","description":"require() whole directory trees","version":"0.3.0","main":"index.js","dependencies":{},"devDependencies":{"mocha":""},"scripts":{"test":"mocha"},"repository":{"type":"git","url":"git://github.com/ricardobeat/require-tree.git"},"author":{"name":"Ricardo Tomasi"},"license":"MIT","directories":{"test":"test"},"keywords":["require","tree","api","paths","directory","directories"],"bugs":{"url":"https://github.com/ricardobeat/require-tree/issues"},"_id":"require-tree@0.3.0","dist":{"shasum":"abf558a84b35f65eb91c67295b6a3943e0ecdab3","tarball":"https://registry.npmjs.org/require-tree/-/require-tree-0.3.0.tgz","integrity":"sha512-4xL/0zQm6jcEWuGQ+NUej5nDS6LP/Bal0IKFEiyMXefc5FDKsNx3kLwnvtUbKawieS1eGC2gIYCLU6CTtZQG+Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICPvSDxUXMKquvcvyyUlo8eHd2Azoi4LXlmAZAG4nhTvAiBDZtlesXMhNsC0q1sMu4RGuQf5CtL/Un6/ilkpseQzrw=="}]},"_from":".","_npmVersion":"1.2.25","_npmUser":{"name":"ricardobeat","email":"ricardobeat@gmail.com"},"maintainers":[{"name":"ricardobeat","email":"ricardobeat@gmail.com"}]},"0.3.2":{"name":"require-tree","description":"require() whole directory trees","version":"0.3.2","main":"index.js","dependencies":{},"devDependencies":{"mocha":""},"scripts":{"test":"mocha"},"repository":{"type":"git","url":"git://github.com/ricardobeat/require-tree.git"},"author":{"name":"Ricardo Tomasi"},"license":"MIT","directories":{"test":"test"},"keywords":["require","tree","api","paths","directory","directories"],"bugs":{"url":"https://github.com/ricardobeat/require-tree/issues"},"_id":"require-tree@0.3.2","dist":{"shasum":"e94c50e55c8dd1cdb84d9890a2a7c0db4151bf36","tarball":"https://registry.npmjs.org/require-tree/-/require-tree-0.3.2.tgz","integrity":"sha512-wzKwDjCzhZ32MJVRYjPzTEbtIJdQ4WmDMflXUcGl3FiHytMa3EMVcrXdZ9r3w05oF0+M9ZcNfMrWD2n68slDCg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsRlW4vGWiENa3W96DUGXu5hN4aj1/F9w3TylNMTSDsQIhAK3GzeME476wJcmnUtDZfKGNSlnNezNUBU/+JUhqEwrm"}]},"_from":".","_npmVersion":"1.2.25","_npmUser":{"name":"ricardobeat","email":"ricardobeat@gmail.com"},"maintainers":[{"name":"ricardobeat","email":"ricardobeat@gmail.com"}]},"0.3.3":{"name":"require-tree","description":"require() whole directory trees","version":"0.3.3","main":"index.js","dependencies":{},"devDependencies":{"mocha":""},"scripts":{"test":"mocha"},"repository":{"type":"git","url":"git://github.com/ricardobeat/require-tree.git"},"author":{"name":"Ricardo Tomasi"},"license":"MIT","directories":{"test":"test"},"keywords":["require","tree","multiple","paths","nested","folders","directory","directories","loader","api"],"bugs":{"url":"https://github.com/ricardobeat/require-tree/issues"},"_id":"require-tree@0.3.3","dist":{"shasum":"82a26655c3b632cd5ecdb57a7e95f4d07c38a44a","tarball":"https://registry.npmjs.org/require-tree/-/require-tree-0.3.3.tgz","integrity":"sha512-LjmJaymxJ8E6b9dk3nONQ+forCpoc2qiGe1piu70xx0i4bmhtzMmkKy3HZTeGEngnHdQJgWKmQmPcZD7SvWPvQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCw834q4e7kXcrgfkuw5byW6v/G8ZDYqpIn7H1FvHKUgwIgXG5vJB7Qc1OiWY1aDTkt+zSYF16Ed6Xb5CpydbDo+68="}]},"_from":".","_npmVersion":"1.2.25","_npmUser":{"name":"ricardobeat","email":"ricardobeat@gmail.com"},"maintainers":[{"name":"ricardobeat","email":"ricardobeat@gmail.com"}]},"1.0.1":{"name":"require-tree","description":"Batch module loader, require() for directories","version":"1.0.1","main":"index.js","dependencies":{"component-type":"^1.1.0","extend":"^2.0.0"},"devDependencies":{"mocha":""},"scripts":{"test":"mocha"},"repository":{"type":"git","url":"git://github.com/ricardobeat/require-tree.git"},"author":{"name":"Ricardo Tomasi"},"license":"MIT","directories":{"test":"test"},"keywords":["require","tree","multiple","paths","nested","folders","directory","directories","loader","api","batch","module","loading","loader"],"gitHead":"10920d94ed533ed199eda5927516514d9781706c","bugs":{"url":"https://github.com/ricardobeat/require-tree/issues"},"homepage":"https://github.com/ricardobeat/require-tree","_id":"require-tree@1.0.1","_shasum":"cd9ed98c890d57f857490337b77e942a2b11885f","_from":".","_npmVersion":"2.1.18","_nodeVersion":"1.0.2","_npmUser":{"name":"ricardobeat","email":"ricardobeat@gmail.com"},"maintainers":[{"name":"ricardobeat","email":"ricardobeat@gmail.com"}],"dist":{"shasum":"cd9ed98c890d57f857490337b77e942a2b11885f","tarball":"https://registry.npmjs.org/require-tree/-/require-tree-1.0.1.tgz","integrity":"sha512-3+ly4xm+TvnfCeOjt/m5iRgmCG9M/1XpzJOHXuLzeCF3TzPfvINET093sI5dUhhbK5KERDXSIXR3Nef+uu99GA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE5pWQP6PZdNnijELpKRmnXcj+e0HTjWYCO2bxcHfhQ5AiEAnbmpBe0aQZfuT3D4EePkF29+iYARglm0wUVf5KliSSU="}]}},"1.1.0":{"name":"require-tree","description":"Batch module loader, require() for directories","version":"1.1.0","main":"index.js","dependencies":{"component-type":"^1.1.0","extend":"^2.0.0"},"devDependencies":{"mocha":""},"scripts":{"test":"mocha"},"repository":{"type":"git","url":"git://github.com/ricardobeat/require-tree.git"},"author":{"name":"Ricardo Tomasi"},"license":"MIT","directories":{"test":"test"},"keywords":["require","tree","multiple","paths","nested","folders","directory","directories","loader","api","batch","module","loading","loader"],"gitHead":"4ee6ce100ab1bc5e004aba5b159b980904a166fe","bugs":{"url":"https://github.com/ricardobeat/require-tree/issues"},"homepage":"https://github.com/ricardobeat/require-tree","_id":"require-tree@1.1.0","_shasum":"41e684084e94fe534117e68c9519c2660da51e0a","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"ricardobeat","email":"ricardobeat@gmail.com"},"maintainers":[{"name":"ricardobeat","email":"ricardobeat@gmail.com"}],"dist":{"shasum":"41e684084e94fe534117e68c9519c2660da51e0a","tarball":"https://registry.npmjs.org/require-tree/-/require-tree-1.1.0.tgz","integrity":"sha512-jVsKaiTyjDZY9zdrhu6SPYfMJHTWEQT6qNCB9g+t7kgPvxCx6N0TrlJxpCJjPRZ0k5sSdkDBq1v3xYgaf8rQNQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGHCMa09z7VC/Ru/QHFcLnLB/vvVXoici9ACFq9YV3CgIgCwtE6kymXyFcgW63bOgLFpJQiDZGSTuVXkEWMJIkgVk="}]}},"1.1.1":{"name":"require-tree","description":"Batch module loader, require() for directories","version":"1.1.1","main":"index.js","dependencies":{"component-type":"^1.1.0","extend":"^2.0.0"},"devDependencies":{"mocha":""},"scripts":{"test":"mocha"},"repository":{"type":"git","url":"git://github.com/ricardobeat/require-tree.git"},"author":{"name":"Ricardo Tomasi"},"license":"MIT","directories":{"test":"test"},"keywords":["require","tree","multiple","paths","nested","folders","directory","directories","loader","api","batch","module","loading","loader"],"gitHead":"b141073f5a8bdb2cad841ceed71743a30c6f73e8","bugs":{"url":"https://github.com/ricardobeat/require-tree/issues"},"homepage":"https://github.com/ricardobeat/require-tree","_id":"require-tree@1.1.1","_shasum":"47f56691b39d0d4ccac45131450e7a496e4dda28","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"ricardobeat","email":"ricardobeat@gmail.com"},"maintainers":[{"name":"ricardobeat","email":"ricardobeat@gmail.com"}],"dist":{"shasum":"47f56691b39d0d4ccac45131450e7a496e4dda28","tarball":"https://registry.npmjs.org/require-tree/-/require-tree-1.1.1.tgz","integrity":"sha512-VZTGjpEY1qXGKgelcjiKAL49tC6QQxvnHq+sW8SD7G3dU0spqMssrO32vECE6nDCRelKem8gC9M2j7IKl0XJag==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDn7a6w2ZBQZh7HbYmUuseiExUYOC8RYiEZTCUlyzE+2gIhAOQE9c9KD2gtns8Ut8XFythyDC/mf4h9GvHm3hNS4+2E"}]}}},"readme":"require-tree\n============\n\n![NPM](https://img.shields.io/npm/v/require-tree.svg?style=flat)\n\nA `require()`-like method for directories, returning an object that mirrors the file tree.\n\n    npm install require-tree\n\n## Usage\n\nConsidering this file structure:\n\n* models\n  * user.js\n  * page.js\n  * item.js\n\nRequiring the `models` directory will return an object containing each exported module:\n\n```javascript\nvar require_tree = require('require-tree')\nrequire_tree('./models')\n/* {\n    user: [object Object],\n    page: [object Object],\n    item: [object Object]\n} */\n```\n\nDirectories can be deeply nested, and`index.js` files are merged into their parent by default:\n\n```javascript\n// api/user.js:\nmodule.exports = {\n    profile: function(){},\n    posts: function(){}\n}\n\n// api/pages/index.js:\nmodule.exports = {\n    list: function(){}\n}\n\n// api/pages/edit.js:\nmodule.exports = {\n    getPermissions: function(){},\n    remove: function(){}\n}\n\nvar api = require_tree('./api')\n```\n\nThis will yield\n\n- `api.user.profile`\n- `api.user.posts`\n- `api.pages.list`\n- `api.pages.edit.getPermissions`\n- `api.pages.edit.remove`\n\n### Options\n\n```javascript\nrequire_tree(path, { options })\n```\n\n#### { name: string | function (exports) }\n\nUse a property of the exports object as it's key (instead of the filename) in the final object.\n\n```javascript\n// models/user-model.js\nmodule.exports = {\n    id: 'user',\n    attrs: {}\n}\n\nrequire_tree('./models', { name: 'id' })\nrequire_tree('./models', { name: function (obj) { return obj.id } })\n// => { user: { id: 'user', attrs: {} } }\n```\n\n#### { filter: string | regexp | function }\n\nFilter the required files. Strings can use a wildcard '*' and are expanded into regular expressions. You can also provide your own RegExp, or a function that receives the filename as an argument, and returns `true` or `false`.\n\n```javascript\nrequire_tree('./path', { filter: '*-model' })\nrequire_tree('./path', { filter: /^model/ })\nrequire_tree('./path', { filter: function (filename) { return filename.indexOf('model') === 0 } })\n```\n\n#### { keys: string | array | regexp | function }\n\nUse to return only certain keys from exported objects. \n\n```javascript\nrequire_tree('./models', { keys: 'at*' })\nrequire_tree('./models', { keys: ['attrs'] })\nrequire_tree('./models', { keys: function (key){ return key.indexOf('attrs') >= 0 } })\n// => { user: { attrs: {} } }\n```\n\n#### { each: function }\n\nCallback to run after each file is required. Doesn't modify the exported object.\n\n```javascript\nrequire_tree('./items', { each: function (obj) { items.insert(obj) } })\n```\n\n#### { transform: function }\n\nSame as `each`, but can modify the exports object.\n\n```javascript\nrequire_tree('./models', { transform: function (obj) { return new Model(obj) } })\n```\n\n#### { index: 'merge', 'ignore', 'preserve' }\n\n  * `merge` (default): merges the `index.js` exports at the root of it's parent\n  * `ignore`: causes `index.js` files to *not be loaded* at all\n  * `preserve`: puts the `index.js` export object under the `.index` property\n\nFor backwards compatibility, a value of `true` is equal to `preserve`, while `false` is equal to `ignore`.\n\n- controllers\n  - index.js\n  - users.js\n  - ...\n\n```javascript\n// controllers/index.js:\nmodule.exports = {\n    init: function () { ... }\n}\n\nvar controllers = require_tree('./controllers', { index: 'preserve' })\ncontrollers.index.init()\n\nvar controllers = require_tree('./controllers', { index: 'ignore' })\ncontrollers.index // undefined\n\nvar controllers = require_tree('./controllers', { index: 'merge' })\ncontrollers.init()\n```\n\n### Limitations\n\n`require-tree` must always be required in the local scope, never shared between modules or as a global. Paths are resolved relative to the parent module, like `require` itself, so it's behaviour depends on `module.parent` being set correctly. If necessary, you can use absolute paths (`__dirname + '/path'`) or set the `NODE_PATH` environment variable.\n","maintainers":[{"name":"ricardobeat","email":"ricardobeat@gmail.com"}],"time":{"modified":"2022-06-26T11:40:53.389Z","created":"2013-01-04T02:48:35.918Z","0.1.0":"2013-01-04T02:48:38.365Z","0.2.0":"2013-03-28T22:31:18.718Z","0.3.0":"2013-10-31T19:12:11.003Z","0.3.2":"2013-10-31T21:15:40.982Z","0.3.3":"2014-01-15T20:26:21.936Z","1.0.0":"2015-01-19T00:08:02.031Z","1.0.1":"2015-01-19T00:11:59.648Z","1.1.0":"2015-10-12T16:58:38.465Z","1.1.1":"2015-10-13T08:07:22.259Z"},"author":{"name":"Ricardo Tomasi"},"repository":{"type":"git","url":"git://github.com/ricardobeat/require-tree.git"},"readmeFilename":"README.md","users":{"vegera":true,"slang800":true,"slang":true,"hengkiardo":true,"lackhurt":true,"j.su":true},"keywords":["require","tree","multiple","paths","nested","folders","directory","directories","loader","api","batch","module","loading","loader"],"bugs":{"url":"https://github.com/ricardobeat/require-tree/issues"},"license":"MIT","homepage":"https://github.com/ricardobeat/require-tree"}