Skip to content

Instantly share code, notes, and snippets.

@johnatandias
Created August 4, 2020 14:12
Show Gist options
  • Save johnatandias/ef63ada2892360287cf3a719121237d5 to your computer and use it in GitHub Desktop.
Save johnatandias/ef63ada2892360287cf3a719121237d5 to your computer and use it in GitHub Desktop.
Check if dependencies need updating
const request = require('request');
const fs = require('fs');
const package = require('./package.json');
const dependencies = {
...package.dependencies,
...package.devDependencies,
};
const getLastVersionOfPackage = packageName => new Promise((resolve, reject) => {
const url = `https://registry.npmjs.org/-/package/${packageName}/dist-tags`;
request.get(url, (error, response, body) => {
if (error) {
console.error(error, packageName);
return reject(error);
}
const json = JSON.parse(body);
resolve(json.latest);
});
});
let reportFile = '';
const createReportFile = data => {
let fileHead = `| Package name |Current version | latest version|Need update| NPM Package URL | \n |-|-|-|-|-|`;
fs.writeFile('report-dependencies.md', `${fileHead} \n ${data}`, error => {
if (error) return console.log(error);
console.log('File created');
});
};
const dependenciesList = Object.entries(dependencies).sort((a, b) => {
return (a[0] > b[0]) ? 1 : ((b[0] > a[0]) ? -1 : 0);
});
dependenciesList.forEach(async ([packageName, currentVersion], index) => {
const privatePackages = !![...currentVersion.matchAll(/[git https npm]/)].length;
if (privatePackages) return;
const npmPackageUrl = `https://npmjs.com/package/${packageName}`;
const lastVersion = await getLastVersionOfPackage(packageName);
const versionNumber = currentVersion.replace('^', '');
reportFile += `|${packageName}|${versionNumber}|${lastVersion}|${lastVersion !== versionNumber ? 'Yes' : 'No'}|${npmPackageUrl}|
`;
if (index === dependenciesList.length - 1) {
createReportFile(reportFile);
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment