UNPKG

unused-assets-cli

Version:

CLI tool to list and remove unused assets in an Angular project

47 lines (46 loc) • 1.83 kB
#!/usr/bin/env node "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const commander_1 = require("commander"); const format_bytes_1 = require("./format-bytes"); const find_unused_assets_1 = require("./find-unused-assets"); const ask_confirmation_1 = require("./ask-confirmation"); const fs_1 = require("fs"); const program = new commander_1.Command(); program .name("unused-assets") .description("Find and optionally remove unused asset files") .option("-p, --patterns <patterns...>", "Glob patterns to scan", [ "src/assets/**/*.*", ]) .option("-r, --remove", "Remove unused files") .option("-f, --force", "Force removal without prompt") .parse(process.argv); const options = program.opts(); (async () => { const { files, totalSize } = await (0, find_unused_assets_1.findUnusedAssets)(options.patterns); if (files.length === 0) { console.log("āœ… No unused assets found."); process.exit(0); } console.log("šŸ—‘ Unused assets:"); files.forEach((f) => console.log(` - ${f}`)); const totalSizeFormatted = (0, format_bytes_1.formatBytes)(totalSize); console.log(`\nšŸ“¦ Total ${files.length} files, size: ${totalSizeFormatted}`); if (options.remove) { let proceed = options.force; if (!proceed) { proceed = await (0, ask_confirmation_1.ask)("Do you want to remove these files? (y/N) "); } if (proceed) { files.forEach((file) => { (0, fs_1.unlinkSync)(file); console.log(`Deleted: ${file}`); }); console.log(`\nšŸ—‘ Removed all ${files.length} unused assets, size: ${totalSizeFormatted} freed`); } else { console.log("Operation cancelled. No files were removed."); } } })();