PR-URL: https://github.com/nodejs/node/pull/41621 Reviewed-By: Ruy Adorno <ruyadorno@github.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Mohammed Keyvanzadeh <mohammadkeyvanzade94@gmail.com> Reviewed-By: Richard Lau <rlau@redhat.com>
24 lines
775 B
JavaScript
24 lines
775 B
JavaScript
const isWindows = require('./is-windows.js')
|
|
const binTarget = require('./bin-target.js')
|
|
const { dirname, resolve, relative } = require('path')
|
|
const linkBin = isWindows ? require('./shim-bin.js') : require('./link-bin.js')
|
|
const normalize = require('npm-normalize-package-bin')
|
|
|
|
const linkBins = ({ path, pkg, top, force }) => {
|
|
pkg = normalize(pkg)
|
|
if (!pkg.bin) {
|
|
return Promise.resolve([])
|
|
}
|
|
const promises = []
|
|
const target = binTarget({ path, top })
|
|
for (const [key, val] of Object.entries(pkg.bin)) {
|
|
const to = resolve(target, key)
|
|
const absFrom = resolve(path, val)
|
|
const from = relative(dirname(to), absFrom)
|
|
promises.push(linkBin({ path, from, to, absFrom, force }))
|
|
}
|
|
return Promise.all(promises)
|
|
}
|
|
|
|
module.exports = linkBins
|