cleanup check-deps
This commit is contained in:
@@ -3,49 +3,52 @@
|
||||
var fs = require('fs')
|
||||
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']
|
||||
|
||||
main()
|
||||
|
||||
// Scans our codebase and package.json for missing or unused dependencies
|
||||
// Process returns 0 on success, prints a message and returns 1 on failure
|
||||
// Scans codebase for missing or unused dependencies. Exits with code 0 on success.
|
||||
function main () {
|
||||
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
|
||||
}
|
||||
|
||||
var jsDeps = findJSDeps()
|
||||
var usedDeps = findUsedDeps()
|
||||
var packageDeps = findPackageDeps()
|
||||
|
||||
var missingDeps = jsDeps.filter((dep) =>
|
||||
packageDeps.indexOf(dep) < 0 &&
|
||||
BUILT_IN_DEPS.indexOf(dep) < 0)
|
||||
var unusedDeps = packageDeps.filter((dep) =>
|
||||
jsDeps.indexOf(dep) < 0 &&
|
||||
EXECUTABLE_DEPS.indexOf(dep) < 0)
|
||||
var missingDeps = usedDeps.filter(
|
||||
(dep) => !packageDeps.includes(dep) && !BUILT_IN_DEPS.includes(dep)
|
||||
)
|
||||
var unusedDeps = packageDeps.filter(
|
||||
(dep) => !usedDeps.includes(dep) && !EXECUTABLE_DEPS.includes(dep)
|
||||
)
|
||||
|
||||
if (missingDeps.length > 0) console.log('Missing package dependencies: ' + missingDeps)
|
||||
if (unusedDeps.length > 0) console.log('Unused package dependencies: ' + unusedDeps)
|
||||
|
||||
if (missingDeps.length + unusedDeps.length > 0) process.exit(1)
|
||||
|
||||
console.log('Lookin good!')
|
||||
if (missingDeps.length > 0) {
|
||||
console.error('Missing package dependencies: ' + missingDeps)
|
||||
}
|
||||
if (unusedDeps.length > 0) {
|
||||
console.error('Unused package dependencies: ' + unusedDeps)
|
||||
}
|
||||
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 () {
|
||||
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 optionalDeps = Object.keys(pkg.optionalDependencies)
|
||||
|
||||
return [].concat(requiredDeps, devDeps, optionalDeps)
|
||||
return [].concat(deps, devDeps, optionalDeps)
|
||||
}
|
||||
|
||||
// Finds all dependencies required() in the code
|
||||
function findJSDeps () {
|
||||
// Finds all dependencies that used with `require()`
|
||||
function findUsedDeps () {
|
||||
var stdout = cp.execSync('./bin/list-deps.sh')
|
||||
return stdout.toString().trim().split('\n')
|
||||
}
|
||||
|
||||
@@ -6,5 +6,5 @@ var path = require('path')
|
||||
|
||||
var child = cp.spawn(electron, [path.join(__dirname, '..')], {stdio: 'inherit'})
|
||||
child.on('close', function (code) {
|
||||
process.exit(code)
|
||||
process.exitCode = code
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user