unused-assets-cli
Version:
CLI tool to list and remove unused assets in an Angular project
47 lines (46 loc) ⢠1.83 kB
JavaScript
;
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.");
}
}
})();