1const isWindows = require('./is-windows.js') 2const binTarget = require('./bin-target.js') 3const { dirname, resolve, relative } = require('path') 4const linkBin = isWindows ? require('./shim-bin.js') : require('./link-bin.js') 5const normalize = require('npm-normalize-package-bin') 6 7const linkBins = ({ path, pkg, top, force }) => { 8 pkg = normalize(pkg) 9 if (!pkg.bin) { 10 return Promise.resolve([]) 11 } 12 const promises = [] 13 const target = binTarget({ path, top }) 14 for (const [key, val] of Object.entries(pkg.bin)) { 15 const to = resolve(target, key) 16 const absFrom = resolve(path, val) 17 const from = relative(dirname(to), absFrom) 18 promises.push(linkBin({ path, from, to, absFrom, force })) 19 } 20 return Promise.all(promises) 21} 22 23module.exports = linkBins 24