cleanup check-deps

This commit is contained in:
Feross Aboukhadijeh
2016-05-26 18:29:07 -07:00
parent 1aabd537d8
commit 9abab7aec3
2 changed files with 26 additions and 23 deletions

View File

@@ -3,49 +3,52 @@
var fs = require('fs') var fs = require('fs')
var cp = require('child_process') var cp = require('child_process')
var BUILT_IN_DEPS = ['child_process', 'electron', 'fs', 'os', 'path', 'screen'] var BUILT_IN_DEPS = ['child_process', 'electron', 'fs', 'os', 'path']
var EXECUTABLE_DEPS = ['gh-release', 'standard'] var EXECUTABLE_DEPS = ['gh-release', 'standard']
main() main()
// Scans our codebase and package.json for missing or unused dependencies // Scans codebase for missing or unused dependencies. Exits with code 0 on success.
// Process returns 0 on success, prints a message and returns 1 on failure
function main () { function main () {
if (process.platform === 'win32') { if (process.platform === 'win32') {
console.log('Sorry, check-deps only works on Mac and Linux') console.error('Sorry, check-deps only works on Mac and Linux')
return return
} }
var jsDeps = findJSDeps() var usedDeps = findUsedDeps()
var packageDeps = findPackageDeps() var packageDeps = findPackageDeps()
var missingDeps = jsDeps.filter((dep) => var missingDeps = usedDeps.filter(
packageDeps.indexOf(dep) < 0 && (dep) => !packageDeps.includes(dep) && !BUILT_IN_DEPS.includes(dep)
BUILT_IN_DEPS.indexOf(dep) < 0) )
var unusedDeps = packageDeps.filter((dep) => var unusedDeps = packageDeps.filter(
jsDeps.indexOf(dep) < 0 && (dep) => !usedDeps.includes(dep) && !EXECUTABLE_DEPS.includes(dep)
EXECUTABLE_DEPS.indexOf(dep) < 0) )
if (missingDeps.length > 0) console.log('Missing package dependencies: ' + missingDeps) if (missingDeps.length > 0) {
if (unusedDeps.length > 0) console.log('Unused package dependencies: ' + unusedDeps) console.error('Missing package dependencies: ' + missingDeps)
}
if (missingDeps.length + unusedDeps.length > 0) process.exit(1) if (unusedDeps.length > 0) {
console.error('Unused package dependencies: ' + unusedDeps)
console.log('Lookin good!') }
if (missingDeps.length + unusedDeps.length > 0) {
process.exitCode = 1
}
} }
// Finds all dependencies, required, optional, or dev, in package.json // Finds all dependencies specified in `package.json`
function findPackageDeps () { function findPackageDeps () {
var pkg = JSON.parse(fs.readFileSync('package.json', 'utf8')) var pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'))
var requiredDeps = Object.keys(pkg.dependencies)
var deps = Object.keys(pkg.dependencies)
var devDeps = Object.keys(pkg.devDependencies) var devDeps = Object.keys(pkg.devDependencies)
var optionalDeps = Object.keys(pkg.optionalDependencies) var optionalDeps = Object.keys(pkg.optionalDependencies)
return [].concat(requiredDeps, devDeps, optionalDeps) return [].concat(deps, devDeps, optionalDeps)
} }
// Finds all dependencies required() in the code // Finds all dependencies that used with `require()`
function findJSDeps () { function findUsedDeps () {
var stdout = cp.execSync('./bin/list-deps.sh') var stdout = cp.execSync('./bin/list-deps.sh')
return stdout.toString().trim().split('\n') return stdout.toString().trim().split('\n')
} }

View File

@@ -6,5 +6,5 @@ var path = require('path')
var child = cp.spawn(electron, [path.join(__dirname, '..')], {stdio: 'inherit'}) var child = cp.spawn(electron, [path.join(__dirname, '..')], {stdio: 'inherit'})
child.on('close', function (code) { child.on('close', function (code) {
process.exit(code) process.exitCode = code
}) })