Skip to content

Instantly share code, notes, and snippets.

@TSMMark
Created June 4, 2018 20:45
Show Gist options
  • Save TSMMark/5488758028b10d537bf1f721198a539e to your computer and use it in GitHub Desktop.
Save TSMMark/5488758028b10d537bf1f721198a539e to your computer and use it in GitHub Desktop.
clear-peer-deps - remove peerDependency records from node_modules/* recursively
const fs = require('fs')
function replaceInFile ({ file, pattern, replacement }) {
fs.readFile(file, 'utf8', (err, data) => {
if (err) {
return console.log(err)
}
const result = data.replace(pattern, replacement)
fs.writeFile(file, result, 'utf8', (err) => {
if (err) return console.log(err)
})
})
}
function removePeerDepsEntry (packageJsonFilePath) {
replaceInFile({
file: packageJsonFilePath,
pattern: /"peerDependencies":[^}]*{[^}]*},/,
replacement: '',
})
}
function recursiveClearPeerDeps (dir = 'node_modules') {
fs.readdir(dir, (err, files) => {
if (err) {
console.error('clear-peer-deps Error: ' + err.toString())
} else {
files.forEach((file) => {
const packageJsonFilePath = path.join(dir, file, 'package.json')
if (fs.existsSync(packageJsonFilePath)) {
removePeerDepsEntry(packageJsonFilePath)
}
const nestedNodeModules = path.join(dir, file, 'node_modules')
if (fs.existsSync(nestedNodeModules)) {
recursiveClearPeerDeps(nestedNodeModules)
}
})
}
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment