UNPKG

ngx-unused

Version:

Detect unused classes (components, pipes, services and directives) defined in Angular workspace.

76 lines (69 loc) 2.58 kB
import { relative } from 'path'; import { cwd, stdout } from 'process'; export const CLI_DECORATOR = '[ngx-unused]'; export function usage() { stdout.write('ngx-unused <directory> -p <tsconfig-file>\n'); stdout.write('Invoke ngx-unused --help for more details\n'); } export function help() { stdout.write(`ngx-unused - find unused classes in Angular codebase \rUsage: ngx-unused <directory> [-p | --project] <tsconfig-file> \r<directory> - directory to be scanned \r to scan multiple directories pass names separated by space \r (usages of classes from source roots will be also searched in source roots) \r<tsconfig-file> - main tsconfig file \r should be one containing @paths definitions \r for NX projects its usually tsconfig.base.json\n Options: \r-p | --project <tsconfigfile> - tsconfig file path (required) \r-h | --help - print this help Source root directories and tsconfig file must be under the same root directory. Examples: ngx-unused . -p tsconfig.base.json ngx-unused libs apps/my-app -p tsconfig.base.json `); } export function invalidTsConfig() { stdout.write("Provided tsconfig file doesn't exists\n"); } export function printNoFiles() { stdout.write('No relevant .ts files found in provided source root(s)\n'); } export function print(content, progress = false) { if (stdout.isTTY) { if (progress) { stdout.write('\r'); } stdout.write(`${CLI_DECORATOR} `); } stdout.write(content); } export function printResults(results) { if (results.length === 0) { print('No unused Angular classes found\n'); return; } let output = ''; const groupedResults = results.reduce((grouped, result) => { var _a; const groupName = `${relative(cwd(), result.directory)}/${result.fileName}`; if (grouped[groupName] !== undefined) { (_a = grouped[groupName]) === null || _a === void 0 ? void 0 : _a.push(result); } else { grouped[groupName] = [result]; } return grouped; }, {}); Object.entries(groupedResults).map(group => { var _a; output += group[0]; output += '\n'; output += ((_a = group[1]) === null || _a === void 0 ? void 0 : _a.map(result => `- ${result.className}\n`).join('')) + '\n'; }); output += '\n\n'; stdout.write('\n'); print(`${results.length} (probably) unused classes\n`); stdout.write(output); }