import fs from 'fs'; import { remove } from 'fs-extra'; import { spawn } from 'child_process'; import trash from 'trash'; const logger = console; fs.writeFileSync('reset.log', ''); const cleaningProcess = spawn('git', [ 'clean', '-xdf', '-n', '--exclude="/.vscode"', '--exclude="/.idea"', ]); cleaningProcess.stdout.on('data', (data) => { if (data && data.toString()) { const l = data .toString() .split(/\n/) .forEach((i) => { const [, uri] = i.match(/Would remove (.*)$/) || []; if (uri) { if ( uri.match(/node_modules/) || uri.match(/dist/) || uri.match(/ts3\.4/) || uri.match(/\.cache/) || uri.match(/dll/) ) { remove(uri).then(() => { logger.log(`deleted ${uri}`); }); } else { trash(uri) .then(() => { logger.log(`trashed ${uri}`); }) .catch((e) => { logger.log('failed to trash, will try permanent delete'); remove(uri); }); } } }); } fs.appendFile('reset.log', data, (err) => { if (err) { throw err; } }); }); cleaningProcess.on('exit', (code) => { if (code === 0) { logger.log('all went well, files are being trashed now'); } else { logger.error(code); } });