Pubspec Checker
Documentation • Issues • Example • License • Pub.dev
A simple Dart/Flutter package that checks the compatibility of all dependencies in the pubspec.yaml file for specified platforms. This package reads the pubspec.yaml file, fetches the package information from pub.flutter-io.cn, and verifies the platforms (like Android, iOS, web, macOS, Windows, and Linux) against the provided list.
✨ Features
🎯 Platform Compatibility Checking
- Check package compatibility across 6 platforms: Android, iOS, Web, Windows, macOS, Linux
- Specify platforms via command-line or programmatic API
- Multi-platform support with a single command
📊 Detailed Reporting & Visualization
- Tabular format for clean, structured output that's easy to read and compare
- Color-coded status indicators for instant visual recognition
- Optional package links to pub.flutter-io.cn for quick reference
- Summary statistics showing support counts per platform
- Unknown package detection with clear warnings
🎨 Flexible Display Options
- Icon mode: Use emoji icons (✅ ❌ ❔) for visual clarity
- ASCII mode: Use plain characters (
Y,N,?) for terminal compatibility - Link display: Show/hide package links to pub.flutter-io.cn
- Progress indicators: Real-time progress during compatibility checks
⚡ Easy Integration
- Command-line interface: Quick one-liner checks
- Programmatic API: Integrate into your own tools and workflows
- Automatic pubspec detection: Automatically finds your
pubspec.yaml - Multiple fallback strategies: Uses 4 different methods to gather platform data
🚀 Quick Start
Installation
Add pubspec_checker to your Flutter or Dart project:
dev_dependencies:
pubspec_checker: ^1.3.0
Run this command:
flutter pub get
# or
dart pub get
📒 Basic CLI Usage
Command-Line Interface (CLI) To use the package, run the following command:
dart run pubspec_checker <platforms> [options]
Parameters
<platforms>: The platforms to check compatibility for. Supported values are:- android
- ios
- web
- windows
- linux
- macos
Options
-sor--show: Display the platform status indicator as icon (e.g. Supported : ✅ ❌ ❔, otherwise the defaultY,N,?).-lor--links: Display the links to the package details.
📚 Examples
Check compatibility for all platforms with links and show icons:
dart run pubspec_checker -s -l
//or
dart run pubspec_checker all -s -l
Check compatibility for android and ios:
dart run pubspec_checker android ios -s -l
Check compatibility for android and ios and shows package link:
dart run pubspec_checker android ios -l
Check compatibility for web:
dart run pubspec_checker web
dart run pubspec_checker:web #alternative command with colon
Example output showing status platform as icon (-s):
dart run pubspec_checker -l -s
Example output showing status platform by default (without -s):
dart run pubspec_checker -l
NOTE: 📝 By default we use ASCII characters (e.g., Y, N, ?) on platform status indicator to ensure proper alignment across different terminals such: (Command Prompt, PowerShell, Linux Terminal, Git Bash, etc). Emojis like ✅, ❌, and ❔ can sometimes have variable widths depending on the terminal or font.
💡 Additional information
If you want to use the package programmatically, here’s how you can do it:
import 'package:pubspec_checker/pubspec_checker.dart';
void main() async {
// Initialize with target platforms
final platformChecker = PlatformChecker([
PackagePlatform.ios,
PackagePlatform.android
]);
// Read dependencies from pubspec.yaml
final pubspecReader = PubspecReader();
final dependencies = pubspecReader.getDependencies();
// Check compatibility
final results = await platformChecker.checkDependenciesCompatibility(dependencies);
// Process results
for (final entry in results.entries) {
final packageName = entry.key;
final compatibility = entry.value;
print('Package: $packageName');
print('Version: ${compatibility.version}');
print('Supported Platforms: ${compatibility.platforms.map((p) => p.platformName).join(', ')}');
print('Link: ${compatibility.link}');
}
}
If you want simply check the list of packages not the dependencies.
import 'package:pubspec_checker/pubspec_checker.dart';
void main() async {
// Initialize with target platforms
final platformChecker = PlatformChecker([
PackagePlatform.ios,
PackagePlatform.android
]);
// Check compatibility of the packages
final results = await platformChecker.checkPackagesCompatibility([
'provider',
'http',
'flutter_bloc',
]);
// Process results
for (final entry in results.entries) {
final packageName = entry.key;
final compatibility = entry.value;
print('Package: $packageName');
print('Version: ${compatibility.version}');
print('Supported Platforms: ${compatibility.platforms.map((p) => p.platformName).join(', ')}');
print('Link: ${compatibility.link}');
}
}
Notes
- Platforms are provided using the
PackagePlatformenum for compile-time safety. - Public APIs are documented with examples, while internal implementations are hidden from API docs.
- When using the package programmatically, add it under
dependencies, notdev_dependencies.
Sample Output:
🔧 How It Works
Platform Detection Strategies
pubspec_checker uses multiple methods to determine platform compatibility:
- Primary: Direct pubspec metadata from pub.flutter-io.cn API
- Fallback 1: Package score tags (platform:xxx tags)
- Fallback 2: Search-based platform detection
- Fallback 3: Web scraping of package pages
This multi-layered approach ensures maximum accuracy even when platform data is incomplete.
Architecture
PubspecReader: Parses pubspec.yaml and extracts dependenciesPlatformChecker: Queries pub.flutter-io.cn APIs and analyzes platform supportPackageChecker: High-level API with formatted console outputPackageCompatibility: Data model for compatibility results
🐞 Contributing
Contributions are welcome! If you encounter any issues or have feature requests, please open an issue or submit a pull request on GitHub.
🎖️ License
This package is licensed under the MIT License.
Libraries
- pubspec_checker
- The main library file for the
pubspec_checkerpackage.