Asset Generator
The asset-gen command scans asset directories and generates type-safe Dart enum files. Instead of referencing assets by raw strings, you get compile-time-checked constants grouped by asset type.
Usage
bash
# Generate from default path (packages/app_asset)
dart run monorepo_toolkit asset-gen generate
# Preview without writing files
dart run monorepo_toolkit asset-gen generate --dry-run
# Specify a custom asset package path
dart run monorepo_toolkit asset-gen generate --package packages/my_assets
# Custom class name prefix
dart run monorepo_toolkit asset-gen generate --prefix MyFlags
| Flag | Abbr | Default | Description |
|---|---|---|---|
--dry-run | -d | false | Preview generated files without writing |
--package | -p | packages/app_asset | Path to the asset package (relative to workspace root) |
--prefix | App | Prefix for generated class names |
How it works
The command scans the assets/ directory inside the target package, discovers all asset files, groups them by subdirectory, and generates one Dart enum file per group in lib/src/generated/.
For example, given this directory structure:
packages/app_asset/
assets/
icons/
ic_home.svg
ic_settings.svg
images/
bg_onboarding.png
logo.pngThe generator produces:
lib/src/generated/icons.dart-- enum withicHome,icSettingslib/src/generated/images.dart-- enum withbgOnboarding,logo
Configuration
Place an asset_generator.yaml inside the asset package directory:
yaml
assets_path: assets
output_path: lib/src/generated
prefix: App
package_name: app_asset
asset_core_import: "package:asset_core/asset_core.dart"
icon_categories:
- outline
- filled
- bold| Field | Default | Description |
|---|---|---|
assets_path | assets | Directory to scan for assets (relative to package) |
output_path | lib/src/generated | Where to write generated files (relative to package) |
prefix | App | Prefix for generated class names |
package_name | app_asset | Package name used in asset path resolution |
asset_core_import | package:asset_core/asset_core.dart | Import path for the asset core library |
icon_categories | [] | Icon subdirectory categories to scan separately |
Melos shortcut
bash
melos run asset:generate # Generate asset enumsWorkflow
- Add asset files to
packages/app_asset/assets/<group>/ - Run
dart run monorepo_toolkit asset-gen generate - Import the generated enums in your feature code
- Access assets with compile-time safety:
AppIcons.icHome.path