require-dir Helper to require() diretories
本来require()只能读一个文件,现在用了这个后就能读取一个目录,当做一个对象就可以使用了
例子
一个目录结构
1 | dir |
在使用requireDir('./dir')
后将会返回:看不懂这个requireDir见下面使用
1 | //也可以看到这个只是名字,而不是扩展名也有,所以有options duplicate |
安装
1 | //注意这个package不是requireDir |
使用
基本使用
1 | var requireDir = require('require-dir') |
自定义使用,增加参数options
1 | var dir = requireDir('./path/to/dir', {recurse: true}); |
Options
recurse
: 是否在子文件夹中递归require()
. (node_modules 中的会被忽略.) 默认 false.duplicates
: 默认预设的,如果多个文件有相同的名字(注意这个只看名字,不看扩展名),只有最高优先权的require()
‘d 会返回. (优先权通过require.extensions
keys的顺序决定,如果recurse
is true那么文件夹的优先权大于文件.) Specifying this optionrequire()
‘s all files and returns full filename keys in addition to basename keys. 默认 false.
例如.在上面那个例子中, 如果多了一个叫 a.json
的, 那么结果还是一样, 但如果改了 duplicates: true
结果如下:
1 | { a: require('./dir/a.js') |
filter
: 就是过滤器,在使用require前过滤夏文件名. 例如在生成环境中忽略dev开头的文件:
1 | requireDir('./dir', { |
mapKey
: 在require-ing后对 module base name进行转换. 例如将 any module names 都大写:
1 | requireDir('./dir', { |
mapValue
: 这个是对value. For example, uppercasing any text exported:
1 | requireDir('./dir', { |
Tips
如果你想在多个文件中使用同一个文件夹下的 require()
, 你就单独建一个 index.js
文件 然后如下:
1 | module.exports = require('require-dir')(); // defaults to '.' |
And don’t worry, the calling file is always ignored to prevent infinite loops.