Skip to content

Instantly share code, notes, and snippets.

@jonsamp
Last active June 30, 2020 02:57
Show Gist options
  • Save jonsamp/b9dd766b32e6d572f226b10329391a20 to your computer and use it in GitHub Desktop.
Save jonsamp/b9dd766b32e6d572f226b10329391a20 to your computer and use it in GitHub Desktop.
const { spawnSync } = require('child_process');
// const packageJSON = require('./package.json');
// const modules = { ...packageJSON.dependencies, ...packageJSON.devDependencies };
// const allModuleNames = Object.keys(modules);
const fs = require('fs');
const path = require('path');
function fileList(dir) {
return fs.readdirSync(dir).reduce(function (list, file) {
var name = path.join(dir, file);
var isDir = fs.statSync(name).isDirectory();
return list.concat(isDir ? fileList(name) : [name]);
}, []);
}
// PROVIDE FILE PATH
const result = fileList('./ui/')
.filter((name) => name.match(/tsx|ts|js/) && !name.match(/\.next|-|_|index|pages/))
.filter((name) => {
const nameParts = name.split('/');
const lastPart = nameParts[nameParts.length - 1];
return lastPart.toLowerCase() !== lastPart;
})
.map((name) => {
const nameParts = name.split('/');
const lastPart = nameParts[nameParts.length - 1];
const nameOnly = lastPart.split('.')[0];
return nameOnly;
});
const unusedModuleNames = [];
for (const moduleName of result) {
const numTimesUsed = spawnSync(
'sh',
[
'-c',
`grep -R --exclude-dir={node_modules,flow-typed,build,coverage,.expo,.next} --exclude={yarn.lock,package.json,test.js} "${moduleName}';" . | wc -l`,
],
{ encoding: 'utf8' }
).stdout.trim();
console.log(moduleName, numTimesUsed);
if (parseInt(numTimesUsed, 10) === 0) {
unusedModuleNames.push(moduleName);
}
}
console.log('POSSIBLY UNUSED MODULES:');
unusedModuleNames.forEach((moduleName) => console.log(moduleName));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment