johnny-dependency
Version:
npm -ls for remote packages
30 lines (20 loc) • 878 B
JavaScript
const { getPackageMeta } = require('./util');
const pacote = require('pacote');
function getLatestDependencies(packages, pacoteOptions = {}) {
function getPackage(npmPackage) {
const spec = `${npmPackage.name}@${npmPackage.version}`;
return pacote.manifest(spec, pacoteOptions);
}
function getPackageDependencies(npmPackageName) {
const packageAtVersion = { name: npmPackageName, version: 'latest' };
return getPackage(packageAtVersion).then(manifest => getPackageMeta(packageAtVersion, manifest));
}
function getLatest(npmPackages) {
return Promise.all(npmPackages.map(npmPackage => getPackageDependencies(npmPackage)));
}
return getLatest(packages).then(latestPackages => latestPackages.reduce((acc, npmPackage) => {
acc[npmPackage.name] = npmPackage.version;
return acc;
}, {}));
}
module.exports = getLatestDependencies;