scripts/sync-peer-deps.js (20 lines of code) (raw):

// // align versions of "peerDependencies" and "dependencies" for a given set of package.json files // usage: node sync-peer-deps.js package.json pacakge.json ... // const fs = require('fs'); for (const file of process.argv.splice(2)) { const pkg = JSON.parse(fs.readFileSync(file).toString()); const deps = pkg.dependencies || { }; let updated = false; if (pkg.peerDependencies) { for (const dep of Object.keys(pkg.peerDependencies)) { const version = deps[dep]; const peerVersion = pkg.peerDependencies[dep]; if (version && version !== peerVersion) { pkg.peerDependencies[dep] = version; updated = true; } } } if (updated) { console.log('updated:', file); fs.writeFileSync(file, JSON.stringify(pkg, undefined, 2)); } }