1.0.0 • Published 10 years ago
mtime-reduce v1.0.0
mtime-reduce
Run a reduce over a collection of files, and save the result in another file.
If there is not more recent mtime than the reduction file, the reduce won't run.
example - npm reverse deps
Iterate over all npm docs in your npm cache,
and construct a table of reverse dependencies.
({$dependencie: {$dependant: count}}
- count is the number of
versions of $dependant
than depend on $dependency
)
var mtr = require('mtime-reduce')
var reduce = mtr({
//selection of files you wish to reduce over.
glob: process.env.HOME +'/.npm/*/*package.json',
//file to save the accumulation in
filename: '/tmp/reverse-deps.json',
//encodign
encoding: 'json', //DON'T FORGET THIS IF IT'S JSON!
//initial value passed to reduce function.
initial: {},
//a reduce function - the same api as Array#reduce
reduce: function (acc, pkg) {
for(var dep in pkg.dependencies || {}) {
acc[dep] = acc[dep] || {}
acc[dep][pkg.name] = (acc[dep][pkg.name] || 0) + 1
}
return acc
}
})
//an async reduce function is returned.
//pass it a callback!
reduce (function (err, data) {
if(err) throw err
console.log(JSON.stringify(data, null, 2))
})
License
MIT
1.0.0
10 years ago