assets-tracker 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -3,20 +3,21 @@
3
3
  [![npm version](https://img.shields.io/npm/v/assets-tracker.svg)](https://www.npmjs.com/package/assets-tracker)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
5
 
6
- **Clean up your codebase and shrink your bundle size with the ultimate unused assets detector.**
6
+ **The ultimate unused assets detector for React, React Native, Web, and Mobile apps.**
7
7
 
8
- `assets-tracker` is a modern, high-performance CLI tool designed to identify and remove unreferenced assets from your project. Whether it's a forgotten hero image, an unused font file, or a legacy video asset, this tool helps you keep your repository lean and efficient.
8
+ `assets-tracker` is a modern, high-performance CLI tool designed to identify and remove unreferenced assets from your project. Whether you're building a **React Web App**, a **React Native Mobile App (iOS/Android)**, or an **Expo** project, this tool helps you keep your repository lean and efficient.
9
9
 
10
10
  ---
11
11
 
12
12
  ## ✨ Features
13
13
 
14
+ - ⚛️ **React & React Native Optimized**: Built-in support for common patterns in modern frontend and mobile frameworks.
15
+ - 📱 **Cross-Platform**: perfect for Web, Mobile (iOS/Android), and Desktop applications.
14
16
  - 🔍 **Deep Scan**: Identifies unused images, videos, fonts, and more across your entire project.
15
- - 🛠️ **Smart Analysis**: Scans your source files (JS, TS, HTML, CSS, etc.) to detect asset references.
17
+ - 🛠️ **Smart Analysis**: Scans your source files (JS, TS, JSX, TSX, HTML, CSS, etc.) to detect asset references.
16
18
  - 🏢 **Modern CLI**: Beautiful, interactive terminal interface with progress indicators and formatted reports.
17
19
  - 🧹 **Interactive Cleanup**: Choose to delete all unused assets at once or select specific files to remove safely.
18
- - 📦 **Dev-Friendly**: Zero configuration needed. Works out of the box with standard project structures.
19
- - 📉 **Size Reports**: View exactly how much space you can save.
20
+ - ⚙️ **Fully Configurable**: Customize extensions and ignore patterns via `.assettracker.json`.
20
21
 
21
22
  ---
22
23
 
@@ -52,6 +53,33 @@ npx assets-tracker clean
52
53
 
53
54
  ---
54
55
 
56
+ ## ⚙️ Configuration
57
+
58
+ Create a `.assettracker.json` in your project root to customize the behavior:
59
+
60
+ ```json
61
+ {
62
+ "assetExtensions": ["png", "jpg", "svg", "webp", "gif"],
63
+ "sourceExtensions": ["js", "jsx", "ts", "tsx", "html", "css"],
64
+ "ignorePatterns": [
65
+ "**/node_modules/**",
66
+ "**/dist/**",
67
+ "**/.expo/**",
68
+ "**/ios/build/**",
69
+ "**/android/app/build/**"
70
+ ]
71
+ }
72
+ ```
73
+
74
+ ### Options
75
+ | Option | Description | Default |
76
+ | :--- | :--- | :--- |
77
+ | `assetExtensions` | Array of file extensions to treat as assets. | `["png", "jpg", ...]` |
78
+ | `sourceExtensions` | Array of file extensions to scan for references. | `["js", "ts", "jsx", "tsx", ...]` |
79
+ | `ignorePatterns` | Glob patterns of directories/files to ignore. | `["node_modules", "dist", ...]` |
80
+
81
+ ---
82
+
55
83
  ## 📂 Supported Asset Types
56
84
 
57
85
  - **Images**: `.png`, `.jpg`, `.jpeg`, `.gif`, `.svg`, `.webp`, `.ico`
@@ -62,21 +90,10 @@ npx assets-tracker clean
62
90
 
63
91
  ## 🧠 How It Works
64
92
 
65
- 1. **Discovery**: The tool builds a list of all asset files in your project (excluding `node_modules`, `dist`, `.git`, etc.).
66
- 2. **Analysis**: It then parses your source code files to search for any mention of the asset's filename or relative path.
93
+ 1. **Discovery**: The tool builds a list of all asset files in your project (excluding ignored paths).
94
+ 2. **Analysis**: It parses your source code files (including JSX/TSX) to search for any mention of the asset's filename or relative path.
67
95
  3. **Reporting**: Assets that aren't mentioned anywhere are marked as "unused".
68
- 4. **Action**: You get a detailed report and the option to delete them securely.
69
-
70
- ---
71
-
72
- ## 🛠️ Configuration (Coming Soon)
73
-
74
- We are working on adding a `.assettracker.json` config file to allow:
75
- - Custom asset extensions.
76
- - Custom source directories.
77
- - Exclusion patterns.
78
-
79
- ---
96
+ 4. **Action**: You get a detailed report and the interactive option to delete them safely.
80
97
 
81
98
  ---
82
99
 
package/dist/analyzer.js CHANGED
@@ -30,3 +30,4 @@ export async function analyzeUnusedAssets(assets, sourceFiles) {
30
30
  totalUnusedSize
31
31
  };
32
32
  }
33
+ //# sourceMappingURL=analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAQ1B,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAAmB,EAAE,WAAqB;IAClF,MAAM,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAEjC,oEAAoE;IACpE,wEAAwE;IAExE,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM;QAErC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAEtD,iDAAiD;QACjD,KAAK,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAE9B,qEAAqE;YACrE,gEAAgE;YAChE,8CAA8C;YAC9C,2CAA2C;YAC3C,4BAA4B;YAC5B,6BAA6B;YAC7B,4CAA4C;YAE5C,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;YAC1E,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,MAAM,eAAe,KAAK,EAAE,GAAG,CAAC,CAAC;YAElE,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChE,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,eAAe,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAEjF,OAAO;QACL,YAAY;QACZ,eAAe;KAChB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ export interface Config {
2
+ assetExtensions?: string[];
3
+ sourceExtensions?: string[];
4
+ ignorePatterns?: string[];
5
+ }
6
+ export declare const DEFAULT_CONFIG: Config;
7
+ export declare function loadConfig(cwd: string): Promise<Config>;
package/dist/config.js ADDED
@@ -0,0 +1,27 @@
1
+ import fs from 'fs-extra';
2
+ import path from 'path';
3
+ import { DEFAULT_ASSET_EXTENSIONS, DEFAULT_SOURCE_EXTENSIONS, DEFAULT_IGNORE } from './scanner.js';
4
+ export const DEFAULT_CONFIG = {
5
+ assetExtensions: DEFAULT_ASSET_EXTENSIONS,
6
+ sourceExtensions: DEFAULT_SOURCE_EXTENSIONS,
7
+ ignorePatterns: DEFAULT_IGNORE
8
+ };
9
+ export async function loadConfig(cwd) {
10
+ const configPath = path.join(cwd, '.assettracker.json');
11
+ if (!(await fs.pathExists(configPath))) {
12
+ return DEFAULT_CONFIG;
13
+ }
14
+ try {
15
+ const userConfig = await fs.readJson(configPath);
16
+ return {
17
+ assetExtensions: userConfig.assetExtensions || DEFAULT_ASSET_EXTENSIONS,
18
+ sourceExtensions: userConfig.sourceExtensions || DEFAULT_SOURCE_EXTENSIONS,
19
+ ignorePatterns: userConfig.ignorePatterns || DEFAULT_IGNORE
20
+ };
21
+ }
22
+ catch (error) {
23
+ console.warn(`\x1b[33m⚠ Warning: Failed to parse .assettracker.json: ${error.message}. Using defaults.\x1b[0m`);
24
+ return DEFAULT_CONFIG;
25
+ }
26
+ }
27
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,cAAc,EACf,MAAM,cAAc,CAAC;AAQtB,MAAM,CAAC,MAAM,cAAc,GAAW;IACpC,eAAe,EAAE,wBAAwB;IACzC,gBAAgB,EAAE,yBAAyB;IAC3C,cAAc,EAAE,cAAc;CAC/B,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAW;IAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;IAExD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACvC,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACjD,OAAO;YACL,eAAe,EAAE,UAAU,CAAC,eAAe,IAAI,wBAAwB;YACvE,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,IAAI,yBAAyB;YAC1E,cAAc,EAAE,UAAU,CAAC,cAAc,IAAI,cAAc;SAC5D,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,0DAA0D,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;QAChH,OAAO,cAAc,CAAC;IACxB,CAAC;AACH,CAAC"}
package/dist/index.js CHANGED
@@ -6,6 +6,7 @@ import { findAssets, findSourceFiles } from './scanner.js';
6
6
  import { analyzeUnusedAssets } from './analyzer.js';
7
7
  import { logger, createSpinner, formatAssetTable } from './ui.js';
8
8
  import chalk from 'chalk';
9
+ import { loadConfig } from './config.js';
9
10
  const program = new Command();
10
11
  program
11
12
  .name('assets-tracker')
@@ -13,10 +14,12 @@ program
13
14
  .version('1.0.0');
14
15
  async function runScan(cwd) {
15
16
  logger.banner();
16
- const spinner = createSpinner('Scanning files...').start();
17
+ const spinner = createSpinner('Loading configuration...').start();
17
18
  try {
18
- const assets = await findAssets(cwd);
19
- const sourceFiles = await findSourceFiles(cwd);
19
+ const config = await loadConfig(cwd);
20
+ spinner.text = 'Scanning files...';
21
+ const assets = await findAssets(cwd, config.assetExtensions, config.ignorePatterns);
22
+ const sourceFiles = await findSourceFiles(cwd, config.sourceExtensions, config.ignorePatterns);
20
23
  spinner.text = 'Analyzing references...';
21
24
  const result = await analyzeUnusedAssets(assets, sourceFiles);
22
25
  spinner.stop();
@@ -105,3 +108,4 @@ program.parse(process.argv);
105
108
  if (!process.argv.slice(2).length) {
106
109
  program.outputHelp();
107
110
  }
111
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,gBAAgB,CAAC;KACtB,WAAW,CAAC,oDAAoD,CAAC;KACjE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,KAAK,UAAU,OAAO,CAAC,GAAW;IAChC,MAAM,CAAC,MAAM,EAAE,CAAC;IAChB,MAAM,OAAO,GAAG,aAAa,CAAC,0BAA0B,CAAC,CAAC,KAAK,EAAE,CAAC;IAElE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAEnC,MAAM,MAAM,GAAG,MAAM,UAAU,CAC7B,GAAG,EACH,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,cAAc,CACtB,CAAC;QACF,MAAM,WAAW,GAAG,MAAM,eAAe,CACvC,GAAG,EACH,MAAM,CAAC,gBAAgB,EACvB,MAAM,CAAC,cAAc,CACtB,CAAC;QAEF,OAAO,CAAC,IAAI,GAAG,yBAAyB,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAE9D,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAEtC,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qDAAqD,CAAC;KAClE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,6DAA6D,CAAC;KAC1E,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAE5C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAExD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QACvC;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,gCAAgC;YACzC,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE;gBAC7D,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;gBAClE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;aACpC;SACF;KACF,CAAC,CAAC;IAEH,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC;IAEnC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACzC;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,0BAA0B;gBACnC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACrC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,GAAG;oBAC7B,KAAK,EAAE,CAAC;iBACT,CAAC,CAAC;aACJ;SACF,CAAC,CAAC;QACH,QAAQ,GAAG,QAAQ,CAAC;IACtB,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QACxC;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,mCAAmC,QAAQ,CAAC,MAAM,UAAU,CAAC;YACrF,OAAO,EAAE,KAAK;SACf;KACF,CAAC,CAAC;IAEH,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,aAAa,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAC;QAClE,IAAI,CAAC;YACH,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;gBAC7B,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACtC,CAAC;YACD,aAAa,CAAC,OAAO,CAAC,wBAAwB,QAAQ,CAAC,MAAM,UAAU,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,aAAa,CAAC,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACrC,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,6BAA6B;AAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}
package/dist/scanner.d.ts CHANGED
@@ -8,5 +8,5 @@ export interface AssetFile {
8
8
  size: number;
9
9
  extension: string;
10
10
  }
11
- export declare function findAssets(cwd: string, extensions?: string[]): Promise<AssetFile[]>;
12
- export declare function findSourceFiles(cwd: string, extensions?: string[]): Promise<string[]>;
11
+ export declare function findAssets(cwd: string, extensions?: string[], ignore?: string[]): Promise<AssetFile[]>;
12
+ export declare function findSourceFiles(cwd: string, extensions?: string[], ignore?: string[]): Promise<string[]>;
package/dist/scanner.js CHANGED
@@ -20,11 +20,11 @@ export const DEFAULT_IGNORE = [
20
20
  '**/package-lock.json',
21
21
  '**/tsconfig.json'
22
22
  ];
23
- export async function findAssets(cwd, extensions = DEFAULT_ASSET_EXTENSIONS) {
23
+ export async function findAssets(cwd, extensions = DEFAULT_ASSET_EXTENSIONS, ignore = DEFAULT_IGNORE) {
24
24
  const patterns = extensions.map(ext => `**/*.${ext}`);
25
25
  const files = await globby(patterns, {
26
26
  cwd,
27
- ignore: DEFAULT_IGNORE,
27
+ ignore,
28
28
  absolute: true
29
29
  });
30
30
  return Promise.all(files.map(async (file) => {
@@ -39,11 +39,12 @@ export async function findAssets(cwd, extensions = DEFAULT_ASSET_EXTENSIONS) {
39
39
  };
40
40
  }));
41
41
  }
42
- export async function findSourceFiles(cwd, extensions = DEFAULT_SOURCE_EXTENSIONS) {
42
+ export async function findSourceFiles(cwd, extensions = DEFAULT_SOURCE_EXTENSIONS, ignore = DEFAULT_IGNORE) {
43
43
  const patterns = extensions.map(ext => `**/*.${ext}`);
44
44
  return globby(patterns, {
45
45
  cwd,
46
- ignore: DEFAULT_IGNORE,
46
+ ignore,
47
47
  absolute: true
48
48
  });
49
49
  }
50
+ //# sourceMappingURL=scanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK;IACjD,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK;IACjD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;CACrC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM;CACzF,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,oBAAoB;IACpB,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,aAAa;IACb,gBAAgB;IAChB,iBAAiB;IACjB,sBAAsB;IACtB,kBAAkB;CACnB,CAAC;AAUF,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAW,EACX,UAAU,GAAG,wBAAwB,EACrC,MAAM,GAAG,cAAc;IAEvB,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE;QACnC,GAAG;QACH,MAAM;QACN,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAC1C,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACzC,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACzB,IAAI,EAAE,OAAO;YACb,YAAY,EAAE,IAAI;YAClB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;SACvC,CAAC;IACJ,CAAC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,GAAW,EACX,UAAU,GAAG,yBAAyB,EACtC,MAAM,GAAG,cAAc;IAEvB,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;IACtD,OAAO,MAAM,CAAC,QAAQ,EAAE;QACtB,GAAG;QACH,MAAM;QACN,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;AACL,CAAC"}
package/dist/ui.js CHANGED
@@ -42,3 +42,4 @@ export function formatAssetTable(assets) {
42
42
  const totalSize = assets.reduce((sum, a) => sum + a.size, 0);
43
43
  console.log('\n' + chalk.bgCyan.black(` Potential Savings: ${filesize(totalSize)} `) + '\n');
44
44
  }
45
+ //# sourceMappingURL=ui.js.map
package/dist/ui.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "assets-tracker",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "A modern, high-performance CLI tool to identify and remove unused assets in your codebase. Automatically scan for unreferenced images, fonts, and media files to optimize your project size.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -26,7 +26,13 @@
26
26
  "images",
27
27
  "media-cleanup",
28
28
  "web-performance",
29
- "developer-tools"
29
+ "developer-tools",
30
+ "react",
31
+ "react-native",
32
+ "expo",
33
+ "ios",
34
+ "android",
35
+ "mobile-development"
30
36
  ],
31
37
  "author": "Dheeraj & Vaibhav",
32
38
  "contributors": [