require-directory

中文文档
2.1.1发布于 2015/05/28MITCommonJS零依赖近 30 天下载 5.3亿

递归地遍历指定目录,require()遍历每个文件,并返回包含这些模块的嵌套散列结构。

中文使用文档
文档目录13 节
  1. 如何使用
  2. 安装(通过 npm )
  3. 用法
  4. 指定另一个目录
  5. 选项
  6. 白名单
  7. 黑名单
  8. 在对象加载时访问它们
  9. 重命名键
  10. 没有递归
  11. 运行单元测试
  12. 许可证
  13. 作者

require-directory

在指定目录上递归迭代, require()` `每个文件,并返回包含这些模块的嵌套散列结构。

在Twitter上关注我(@troygoode) !

NPM

build status

如何使用

安装(通过 npm)

$ npm install require-directory

用法

node.js中的一个常见模式是包含一个索引文件,该文件创建当前目录下文件的哈希值。给定如下的目录结构:

  • app.js
  • 路线/
    • index.js
    • home.js
    • 身份验证/
      • login.js
      • logout.js
      • register.js

routes/index.js 使用 require-directory 要创建哈希(而不是手动创建),如下所示:

var requireDirectory = require('require-directory');
module.exports = requireDirectory(module);

app.js 参考文献 routes/index.js 的导出的散列/树 ./routes/ 目录:

var routes = require('./routes');

// snip

app.get('/', routes.home);
app.get('/register', routes.auth.register);
app.get('/login', routes.auth.login);
app.get('/logout', routes.auth.logout);

这个 routes 上面的变量等价于:

var routes = {
  home: require('routes/home.js'),
  auth: {
    login: require('routes/auth/login.js'),
    logout: require('routes/auth/logout.js'),
    register: require('routes/auth/register.js')
  }
};

请注意, routes.index 将 undefined 如你所愿。

指定另一个目录

您可以通过将其作为第二个参数传递来指定要构建树的目录(如果由于某种原因它不是当前目录)。未指定路径(requireDirectory(module))是等同的 requireDirectory(module, __dirname):

var requireDirectory = require('require-directory');
module.exports = requireDirectory(module, './some/subdirectory');

例如,在 示例,请参阅用法部分 我们可以避免创造 routes/index.js 而是改变了第一行 app.js :

var requireDirectory = require('require-directory');
var routes = requireDirectory(module, './routes');

选项

您可以将选项散列传递给 require-directory 作为第二个参数(如果您已经将路径作为第二个参数传递给另一个目录,则可以作为第三个参数)。以下是可用的选项:

白名单

白名单(通过RegExp或函数)允许您指定只加载某些文件。

var requireDirectory = require('require-directory'),
  whitelist = /onlyinclude.js$/,
  hash = requireDirectory(module, {include: whitelist});
var requireDirectory = require('require-directory'),
  check = function(path){
    if(/onlyinclude.js$/.test(path)){
      return true; // don't include
    }else{
      return false; // go ahead and include
    }
  },
  hash = requireDirectory(module, {include: check});

黑名单

黑名单(通过RegExp或函数)允许您指定除某些文件外的所有文件都应该加载。

var requireDirectory = require('require-directory'),
  blacklist = /dontinclude\.js$/,
  hash = requireDirectory(module, {exclude: blacklist});
var requireDirectory = require('require-directory'),
  check = function(path){
    if(/dontinclude\.js$/.test(path)){
      return false; // don't include
    }else{
      return true; // go ahead and include
    }
  },
  hash = requireDirectory(module, {exclude: check});

在对象加载时访问它们

require-directory 取一个函数作为 visit 选项,对于添加到module.exports中的每个模块将调用该选项。

var requireDirectory = require('require-directory'),
  visitor = function(obj) {
    console.log(obj); // will be called for every module that is loaded
  },
  hash = requireDirectory(module, {visit: visitor});

访问者也可以通过返回一个值来转换对象:

var requireDirectory = require('require-directory'),
  visitor = function(obj) {
    return obj(new Date());
  },
  hash = requireDirectory(module, {visit: visitor});

重命名键

var requireDirectory = require('require-directory'),
  renamer = function(name) {
    return name.toUpperCase();
  },
  hash = requireDirectory(module, {rename: renamer});

没有递归

var requireDirectory = require('require-directory'),
  hash = requireDirectory(module, {recurse: false});

运行单元测试

$ npm run lint
$ npm test

许可证

麻省理工学院的许可

作者

特洛伊古德 ([email protected])

版本与发布记录

require-directory 共发布 12 个版本,首次发布于 2011/12/27;过去 12 个月发布了 0 个版本。

版本发布日期距今
2.1.1latest2015/05/2811 年前
2.1.02015/02/1911 年前
2.0.02014/07/2912 年前
1.2.02013/11/1412 年前
1.1.12013/09/0113 年前
1.1.02013/08/2913 年前

关于 require-directory 的常见问题

require-directory 是什么?

递归地遍历指定目录,require()遍历每个文件,并返回包含这些模块的嵌套散列结构。

如何安装 require-directory?

在项目目录运行 npm install require-directory,或使用 pnpm add / yarn add / bun add。

require-directory 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/require-directory 是否存在。

require-directory 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

require-directory 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=0.10.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

require-directory 可以商用吗?

require-directory 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

require-directory 的下载量有多少?

根据 npm 官方下载统计,require-directory 在 2026/10/04 – 2026/11/02 这 30 天内被下载 533,412,703 次,日均约 17,780,423 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

require-directory 还在维护吗?

最新版本 2.1.1 发布于 2015/05/28(11 年前);至今共发布 12 个版本,其中过去 12 个月发布了 0 个;首次发布于 2011/12/27。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。