Skip to content

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 My

Flags

FlagAbbrDefaultDescription
--dry-run-dfalsePreview generated files without writing
--package-ppackages/app_assetPath to the asset package (relative to workspace root)
--prefixAppPrefix 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.png

The generator produces:

  • lib/src/generated/icons.dart -- enum with icHome, icSettings
  • lib/src/generated/images.dart -- enum with bgOnboarding, 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
FieldDefaultDescription
assets_pathassetsDirectory to scan for assets (relative to package)
output_pathlib/src/generatedWhere to write generated files (relative to package)
prefixAppPrefix for generated class names
package_nameapp_assetPackage name used in asset path resolution
asset_core_importpackage:asset_core/asset_core.dartImport path for the asset core library
icon_categories[]Icon subdirectory categories to scan separately

Melos shortcut

bash
melos run asset:generate   # Generate asset enums

Workflow

  1. Add asset files to packages/app_asset/assets/<group>/
  2. Run dart run monorepo_toolkit asset-gen generate
  3. Import the generated enums in your feature code
  4. Access assets with compile-time safety: AppIcons.icHome.path

Built by Banua Coder