/
linker.js
executable file
·32 lines (31 loc) · 1.15 KB
/
linker.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/usr/bin/env node
var fs = require('fs');
var npm = require('npm');
var arrays = require('async-arrays');
var intersect = require('array-intersection');
module.exports = function(pack, cb){
var packages = [];
if(pack.dependencies)
packages = packages.concat(Object.keys(pack.dependencies));
if(pack.peerDependencies)
packages = packages.concat(Object.keys(pack.peerDependencies));
if(pack.devDependencies)
packages = packages.concat(Object.keys(pack.devDependencies));
if(pack.optionalDependencies)
packages = packages.concat(Object.keys(pack.optionalDependencies));
fs.readdir(process.cwd()+'/..', function(err, files){
var linkables = intersect(files, packages);
npm.load({
loaded: false
}, function(err){
arrays.forEachEmission(linkables, function(packageName, index, done){
npm.commands.link(packageName, function(){
done();
})
}, function(){
if(linkables) console.log('linked: '+linkables.join(', '));
if(cb) cb(undefined, linkables);
});
});
});
}