{"id":23739520,"url":"https://github.com/sparkforge/node-size-analyzer","last_synced_at":"2025-09-04T15:30:58.360Z","repository":{"id":269437225,"uuid":"907414884","full_name":"sparkforge/node-size-analyzer","owner":"sparkforge","description":"CLI tool to analyze node_modules sizes","archived":false,"fork":false,"pushed_at":"2024-12-23T15:02:00.000Z","size":693,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2024-12-23T15:30:26.359Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sparkforge.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-23T14:26:42.000Z","updated_at":"2024-12-23T15:02:03.000Z","dependencies_parsed_at":"2024-12-23T15:32:15.687Z","dependency_job_id":"c7b07787-2142-4f57-a0e4-8ce9936ddd28","html_url":"https://github.com/sparkforge/node-size-analyzer","commit_stats":null,"previous_names":["sparkforge/node-size-analyzer"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sparkforge%2Fnode-size-analyzer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sparkforge%2Fnode-size-analyzer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sparkforge%2Fnode-size-analyzer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sparkforge%2Fnode-size-analyzer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sparkforge","download_url":"https://codeload.github.com/sparkforge/node-size-analyzer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":231970931,"owners_count":18453925,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-31T09:36:58.599Z","updated_at":"2025-09-04T15:30:58.349Z","avatar_url":"https://github.com/sparkforge.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# Node Size Analyzer\n\nA fast CLI tool to analyze and visualize the size of your node_modules dependencies using a terminal UI.\n\n![Screenshot of Node Size Analyzer](screenshot.png)\n\n## Features\n\n- Interactive terminal UI using ratatui\n- Real-time size calculation of node_modules\n- Sorted display by size (largest modules first)\n- Human-readable size formatting (B, KB, MB)\n- Cross-platform support (Windows, MacOS, Linux)\n- Fast directory traversal for quick analysis\n\n## Installation\n\n### Using Cargo\n\nThe latest stable version is automatically published to crates.io:\n\n```bash\ncargo install node-size-analyzer\n```\n\n### From GitHub Releases\n\nPre-built binaries for all major platforms are automatically generated for each release and available from the [releases page](https://github.com/Caryyon/node-size-analyzer/releases).\n\n#### Linux/MacOS\n\n```bash\n# Download the latest release for your platform\ncurl -L https://github.com/Caryyon/node-size-analyzer/releases/latest/download/node-size-linux -o node-size\n# or for macOS: \n# curl -L https://github.com/Caryyon/node-size-analyzer/releases/latest/download/node-size-macos -o node-size\nchmod +x node-size\n./node-size\n```\n\n#### Windows\n\n```bash\n# Download using PowerShell\nInvoke-WebRequest -Uri https://github.com/Caryyon/node-size-analyzer/releases/latest/download/node-size-windows.exe -OutFile node-size.exe\n.\\node-size.exe\n```\n\nNew releases are automatically published when changes are merged to the main branch.\n\n## Usage\n\n1. Navigate to your project directory containing node_modules\n2. Run `node-size`\n3. The terminal UI will display all modules sorted by size\n4. Use the following key controls:\n   - Press 'q' to exit\n   - Arrow Up/Down or 'k'/'j' to scroll one line\n   - Page Up/Down to scroll a full page\n   - Home/End to jump to beginning/end of the list\n\n### Example Output\n\nThe tool displays a table with:\n- Module names (left column)\n- Size in human-readable format (right column)\n- Sorted from largest to smallest\n\n## Building from Source\n\n```bash\ngit clone https://github.com/Caryyon/node-size-analyzer.git\ncd node-size-analyzer\ncargo build --release\n```\n\nThe compiled binary will be available at `target/release/node-size`.\n\n## Development\n\n### Project Structure\n\n- `src/main.rs` - Main application code\n- `Cargo.toml` - Project dependencies and configuration\n\n### Running Tests\n\nThis project includes unit tests for core functionality. To run the tests:\n\n```bash\ncargo test\n```\n\nThe test suite includes:\n- Tests for size formatting\n- Tests for directory size calculation\n- Tests for module scanning and sorting\n\n### Adding Features\n\nWhen adding new features, please ensure:\n1. All tests pass (run `cargo test`)\n2. Code follows Rust formatting standards (run `cargo fmt`)\n3. No clippy warnings (run `cargo clippy`)\n\n## Contributing\n\nThis project uses [Semantic Versioning](https://semver.org/) and [Conventional Commits](https://www.conventionalcommits.org/).\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Add tests for your changes\n4. Ensure all tests pass (`cargo test`)\n5. Commit your changes using the conventional commit format:\n   - `feat: add new feature` (triggers minor version bump)\n   - `fix: resolve bug issue` (triggers patch version bump)\n   - `docs: update documentation` (triggers patch version bump)\n   - `feat!: redesign API` (triggers major version bump)\n6. Push to the branch (`git push origin feature/amazing-feature`)\n7. Open a Pull Request\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines on commit messages and the release process.\n\n## How It Works\n\nThe tool:\n1. Scans your `node_modules` directory recursively\n2. Calculates the size of each top-level module\n3. Sorts modules by size (largest first)\n4. Renders an interactive table UI with the results\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Acknowledgments\n\n- Built with [ratatui](https://github.com/ratatui-org/ratatui) for the terminal UI\n- Terminal handling by [crossterm](https://github.com/crossterm-rs/crossterm)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsparkforge%2Fnode-size-analyzer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsparkforge%2Fnode-size-analyzer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsparkforge%2Fnode-size-analyzer/lists"}