pubspec_generator
Code generator pubspec.yaml.g.dart from pubspec.yaml
Pubspec Generator is a Dart library that auto-generates a class containing the information from pubspec.yaml
description, dependencies and the current app version for all possible platforms. This is an efficient way to keep the application metadata up-to-date across your entire project.
Features
-
Automated code generation: Create a Dart class that includes your
pubspec.yaml
description and current application version automatically. -
Cross-platform compatibility: Supports all platforms where Dart is available.
Continually updated: The generated class updates as your pubspec.yaml changes, so your application's metadata remains current at all times.
Installation
First, add pubspec_info_codegen to your pubspec.yaml
:
dev_dependencies:
build_runner: <VERSION>
pubspec_generator: <VERSION>
or just run
$ dart pub add --dev build_runner pubspec_generator
Then, run the flutter pub get command to fetch the dependency:
$ dart pub get
Configuration
Create build.yaml
at project root (near with pubspec.yaml
).
And set output path:
targets:
$default:
sources:
- $package$
- lib/**
- pubspec.yaml
builders:
pubspec_generator:
options:
output: lib/src/constants/pubspec.yaml.g.dart
- Read more about
build.yaml
at here.
Usage
To use the library, you need to run the provided script which triggers the code generation. Below is an example command to do so:
$ dart run build_runner build --delete-conflicting-outputs
This command generates a pubspec.yaml.g.dart
file in your lib
directory, which contains a class with your pubspec.yaml
description and the current app version. You can import this file in your Dart code and use the class to access your app's metadata.
Use Cases
-
Consistent app metadata across multiple platforms: This library ensures that the application metadata (description, version) is consistent across all platforms, reducing the chances of discrepancies.
-
Reduced manual errors: Automated code generation eliminates the need for manual updates and thereby reduces the potential for errors.
-
Faster development process: Less time spent managing app metadata means more time for feature development.
-
Dynamic display of app information: You can use the generated class to dynamically display the app's description and version in the UI, which would automatically stay updated with changes in
pubspec.yaml
. -
Automated Version Migration: With the library's functionality, you can also handle automated version migration. If your app has different behavior or functionalities across different versions, you can use the auto-generated class to identify the current version and execute the necessary migration logic. This ensures a smooth and seamless user experience across updates.
-
Backend Request Headers: The generated class can also be used to add meta information from
pubspec.yaml
into the headers of your backend requests. This can help your backend service identify the app version that is making the request, which can be useful for debugging, tracking, or version-specific behaviors on the backend. -
App Analytics Configuration: The metadata from
pubspec.yaml
(like app version) can be sent to your analytics tool (such as Firebase Analytics) to track the usage of different app versions. This can provide valuable insights into your user base, helping you understand how different versions of your app are being used, which versions are most popular, and how updates affect user behavior. It can also assist in identifying any issues or crashes specific to a certain version.
Result
Generated record for version. A full output example can be found here.
Changelog
Refer to the Changelog to get all release notes.
Maintainers
- Matiunin Mikhail aka Plague Fox
Funding
If you want to support the development of our library, there are several ways you can do it:
We appreciate any form of support, whether it's a financial donation or just a star on GitHub. It helps us to continue developing and improving our library. Thank you for your support!
License
The MIT License is a permissive free software license originating at the Massachusetts Institute of Technology (MIT). It's a simple license that has minimal restrictions on what end-users can do with the software. Here's a summary of the permissions, conditions, and limitations under the MIT License:
Permissions:
- Commercial Use: You are free to use the software for commercial purposes.
- Modification: You can make changes to the software and distribute your modifications.
- Distribution: You can distribute the original or modified (derivative) software.
- Private Use: You are free to use the software for private purposes.
Conditions:
- Include Copyright: You must include the original copyright notice in any copy of the software/source code.
- Include License: You must include a copy of the license in any copy of the software/source code.
Limitations:
- No Liability: The software is provided "as is". The authors or copyright holders cannot be held liable for any damages or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the software or the use or other dealings in the software.
- No Warranty: The authors or copyright holders provide no warranty of any kind.
It's important to note that this is a simplified explanation of the MIT License. If you're using MIT-licensed software in a manner that could expose you to legal risk, it's always a good idea to consult with a qualified legal professional.