Open1
複数のcomposer.lockを比較してバージョンが変わったライブラリがわかるくん
const fs = require('fs');
const _ = require('lodash');
if (process.argv.length !== 4) {
console.error('Usage: node compare.js <old-composer.lock> <new-composer.lock>');
process.exit(1);
}
const oldLock = JSON.parse(fs.readFileSync(process.argv[2], 'utf-8'));
const newLock = JSON.parse(fs.readFileSync(process.argv[3], 'utf-8'));
const oldPackages = _.keyBy(oldLock.packages, 'name');
const newPackages = _.keyBy(newLock.packages, 'name');
let differences = [];
_.forEach(newPackages, (newPkg, pkgName) => {
const oldPkg = oldPackages[pkgName];
if (!oldPkg || oldPkg.version !== newPkg.version) {
differences.push({
name: pkgName,
version: newPkg.version,
oldVersion: oldPkg ? oldPkg.version : 'N/A'
});
}
});
console.table(differences);
実行イメージ
❯ node compare.js old.lock new.lock
┌─────────┬─────────────────────────┬─────────┬────────────┐
│ (index) │ name │ version │ oldVersion │
├─────────┼─────────────────────────┼─────────┼────────────┤
│ 0 │ 'sentry/sentry' │ '4.9.0' │ '3.21.0' │
│ 1 │ 'sentry/sentry-laravel' │ '4.8.0' │ '3.3.2' │
└─────────┴─────────────────────────┴─────────┴────────────┘