asset_opt π―
A powerful Flutter/Dart tool for analyzing and optimizing project assets. Get detailed insights into your asset usage and automatically optimize images to improve your app's performance.
Features π
Detailed Asset Analysis
- π Size and type distribution visualization
- π Directory structure breakdown
- π Image dimension analysis
- β οΈ Issue detection and recommendations
Smart Optimization
- ποΈ Automatic image compression
- π Size reduction while maintaining quality
- π Format conversion suggestions
- πΎ Safe backups before optimization
Beautiful Reports
- π Visual progress tracking
- π¨ Color-coded terminal output
- π Detailed JSON reports
- π Size statistics and savings
Installation π₯
dart pub global activate asset_opt
Or add to your pubspec.yaml
for project-specific usage:
dev_dependencies:
asset_opt: ^1.0.2
Usage π»
Command Line
# Show help and available commands
asset_opt --help
# Analyze project assets
asset_opt --analyze
# Analyze and optimize
asset_opt --optimize
# Specify project path and quality
asset_opt -p /path/to/project -q 85 --optimize
# Verbose output
asset_opt --verbose
As a Library
import 'package:asset_opt/asset_opt.dart';
void main() async {
// Initialize services
final fileService = FileService();
final imageService = ImageService();
final analysisState = AnalysisState();
// Create analyzer
final analyzer = AnalyzeCommand(
fileService,
imageService,
analysisState,
);
// Run analysis
final analysis = await analyzer.execute('./');
// Check for issues
if (analysis.hasIssues()) {
print('Found optimization opportunities:');
for (final asset in analysis.assets) {
if (asset.issues.isNotEmpty) {
print('${asset.info.name}:');
for (final issue in asset.issues) {
print(' - ${issue.message}');
}
}
}
}
}
Output Examples πΈ
Asset Analysis
π Asset Analysis Report
ββββββββββββββββββββββββ
Project: /Users/username/projects/my_app
ββββββββββββββββββββββββ
ββ assets (632 files, 22.4 MB)
ββ images (631 files, 22.4 MB)
β ββ flags (492 files, 3.7 MB)
β ββ bgs (4 files, 2.5 MB)
ββ icons (1 files, 829 B)
Type Distribution
π Assets by Type
ββββββββββββββββββββββββ
Type Size Files Distribution
PNG 22.4 MB 631 βββββββββββββββββββββββββββββ β 65.2%
JPEG 10.2 MB 492 βββββββββββββββββ β 29.8%
WEBP 1.5 MB 4 ββββ β 4.3%
SVG 829.0 B 1 β β 0.7%
Optimization Suggestions
β οΈ Optimization Opportunities
ββββββββββββββββββββββββ
β background.png
Current: 2.5 MB
Recommended: < 500 KB (reduce by 80%)
β Use pngquant or tinypng for lossless compression
Configuration βοΈ
Create asset_opt.yaml
in your project root:
# Asset optimization settings
optimization:
jpeg_quality: 85
webp_quality: 80
strip_metadata: true
# Size limits
limits:
max_file_size: 1MB
max_total_size: 50MB
# Patterns to exclude
exclude:
- '**/test/assets/*'
FAQ β
Q: Is it safe to use on production assets? A: Yes! The tool creates backups before any optimization.
Q: What image formats are supported? A: Currently supports PNG, JPEG, WebP, and SVG files.
Q: Will this work with my CI/CD pipeline? A: Yes, the tool can be integrated into CI/CD workflows.
Contributing π€
Contributions are welcome! Please read our contributing guidelines before submitting pull requests.
Roadmap πΊοΈ
Version 1.2.0
Version 1.3.0
License π
Licensed under the MIT License file for details.
Support πͺ
If you find this tool helpful, please consider:
- Starring the repository β
- Reporting issues π
- Contributing to the code π»
- Sharing with others π
Libraries
- asset_opt
- command/analyze_command
- command/optimize_command
- command/report_command
- model/analysis_result
- model/asset_detail
- model/asset_info
- model/asset_issue
- model/cache_entry
- model/file_scan_result
- model/image_info
- model/optimization_config
- model/optimization_result
- service/cache_service
- service/file_service
- service/image_service
- service/report_service
- state/analysis_state
- state/base_state
- state/optimization_state
- state/report_state
- utils/exceptions
- view/analysis_progress_listener
- view/analysis_view
- view/optimization_view
- view/progress_view
- view/terminal_colors