deptrics, like metrics
A package to report dependency metrics. Currently relies on output from yarn info commands directly. See #2.
getPackageMetrics(obj), getPackageMetrics({packageName})
Object
packageName: Name of the npm package to retrieve metrics for
Object
avgTimeBetweenMajors: The average time, in milliseconds, between two major version releases - a measure of how often breaking changes are made to this libraryavgTimeBetweenReleases: The average time, in milliseconds, between every release of this package - a measure of how often the package is updatedlastReleaseDate: The last time the package was updated
getPackageVersionMetrics(obj),
getPackageVersionMetrics({packageName, version})
Object
packageName: Name of the npm package to retrieve metrics forversion: Package version to calculate health metrics foradditionalMetricCalculation: A function which is passed the result ofyarn info, and whose return value is spread into the return value of this function. Allows for customization of metrics without needing to callyarn infoagain.
Object, <PackageVersionMetricObject>
mostRecentVersion: The most recently published version of this packageversionSequenceNumberDistance: The number of versions published between theversionparameter, and the latest version of the package, a measure of how outdated a version is. Note: this metric is not ideal for packages which are frequently published, as many SF libraries are - so we recommend using in conjunction with other metrics provided.versionReleaseDateDistance: The amount of time, in milliseconds, between the time theversionparameter of the package was published, and the time the most recent version was published, another metric of how outdated a particular version is.semverDiff: The semver difference between two versions -major,minor,patch. Returnsmajorfor multiple major differences (i.e.0.0.1to3.0.2), andnullfor equal versions.version: The version passed into this functiontimeOutdated: The amount of time a dependency has been outdated, calculated from the time the function is calledtimeOutdatedMajor: The amount of time a dependency has been a major version out of date, calculated from the time the function is called.
getMetricsForDependencies(dependencies)
Array<DependencyObject>
DependencyObject:{packageName: packageVersion}
Array<PackageVersionMetricObject>: See return value of
getPackageVersionMetrics
aggregateMetrics(packageVersionMetrics)
Array<PackageVersionMetricObject>
Object
countOutdated: The number of outdated dependencies in the list of package metricscountMajor: The number of dependencies off by at least one major versioncountMinor: The number of dependencies off by at least one minor version, but not a major.countPatch: The number of dependencies off by at least one patch version, but not a minor or major.dependencyCount: The total number of dependencies metrics computed foraverageVersionSequenceDistance: The average of all the version sequence number distancesmedianVersionSequenceDistance: The median of all the version sequence number distancesaverageVersionReleaseDateDistance: The average of all the version release date distances
const { getMetricsForDependencies, aggregateMetrics } = require("deptrics");
// Retrieving metrics for a list of dependencies
// Returns array of package version metrics, described below
const dependencyMetrics = getMetricsForDependencies({
semver: "7.3.2",
lib: "10.0.1",
});
// generate a report for all dependencies
const metricsReport = aggregateMetrics(dependencyMetrics);const { getPackageVersionMetrics, getPackageMetrics } = require("deptrics");
// Get metrics for how outdated a specific dependency is
const packageVersionMetrics = getPackageVersionMetrics({
packageName: "foo",
version: "10.0.1",
});
// Get data about the release patterns of a package
const packageVersionMetrics = getPackageMetrics({
packageName: "foo",
});