popular-package
Version:
> Get the popularity stats of packages in a mono repository either internally or on npm for [bolt](https://github.com/boltpkg/bolt) or [lerna](https://github.com/lerna/lerna).
41 lines (35 loc) • 1.37 kB
JavaScript
// @flow
;
const ora = require('ora');
const chalk = require('chalk');
const { table } = require('../utils/cli');
const { getInternalDependency } = require('../utils/getInternalDependency');
const { getAllPackages } = require('../utils/dir');
async function internal({ cwd } /*: {cwd: string}*/) {
const spinner = new ora({
text: 'Calculating internal dependency Data'
}).start();
const packages = await getAllPackages(cwd);
const dependencyTree = await getInternalDependency(cwd, packages);
let sortedKeys = Object.keys(dependencyTree).sort(
(maybeSmall, maybeBig) =>
dependencyTree[maybeBig].length - dependencyTree[maybeSmall].length
);
spinner.succeed('Completed with calculation for internal dependency')
console.log(
table({
columns: ['', chalk`{yellow Package Name}`, chalk`{yellow Dependent Packages Count}`, chalk`{yellow Dependent Packages}`],
rows: sortedKeys.map((key, index) => {
const extraPackages = Math.max(dependencyTree[key].length - 3, 0);
const dependentPackagesExtraMessage = `and ${extraPackages} more.`
return [
index+1,
key,
dependencyTree[key].length,
chalk`${dependencyTree[key].slice(0, 3)} {green ${extraPackages > 0 ? dependentPackagesExtraMessage: ''}}`,
]
})
})
);
}
module.exports = internal;