Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save marco-carvalho/afffdc32923d1b04ba3e6f1b634d2175 to your computer and use it in GitHub Desktop.
Save marco-carvalho/afffdc32923d1b04ba3e6f1b634d2175 to your computer and use it in GitHub Desktop.
const childProcess = require("child_process");
const pjson = require('./package.json');
const getDependencies = () => {
const response = [];
const { dependencies } = pjson;
console.log(dependencies)
if (!dependencies) {
console.log("Package.json without dependencies.");
return;
}
Object.keys(dependencies).forEach((key) => {
response.push({
name: key,
version: dependencies[key].replace("^", "")
})
});
return response;
};
const getListVersionsDates = (dependencyName) => {
return new Promise((resolve, reject) => {
childProcess.exec(`npm view ${dependencyName} time --json`, (err, stdout) => {
if (err) reject(err);
const response = [];
const listVersionDate = JSON.parse(stdout)
Object.keys(listVersionDate).forEach((key) => {
response.push({
version: key,
date: new Date(listVersionDate[key])
})
});
resolve(response)
});
});
}
(async () => {
const response = [];
const dependencies = getDependencies();
for await (const dependency of dependencies) {
console.log(dependency)
const listVersionDate = await getListVersionsDates(dependency.name);
listVersionDate.forEach((versionDate) => {
if (dependency.version === versionDate.version) {
response.push({
name: dependency.name,
version: dependency.version,
date: versionDate.date,
})
}
})
}
console.table(response.slice().sort((a, b) => b.date.getTime() - a.date.getTime()));
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment