npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

staged-runner

v1.1.0

Published

CLI to run build_runner only on modified .dart files

Downloads

17

Readme

Staged Runner

CLI to run build_runner only on modified .dart files.

Problem

In large Flutter/Dart projects, build_runner can take a long time because it generates code for all files. During development, when you only modify one or a few files, this is inefficient.

Solution

This CLI detects modified .dart files (staged + unstaged) and temporarily modifies build.yaml to run build_runner only on those files.

Installation

npm install -g staged-runner

Usage

cd my-flutter-project

# Just run it - it detects modified files automatically
sr

# Scan dependencies (recommended for smart rebuilds)
sr deps

# Force full dependency scan
sr deps --force

Configuration

Create a .staged-runner/config.json file in your project root:

{
  "paths": ["lib", "packages/core/lib"],
  "dependency_patterns": ["^\\s*enum\\s+\\w+\\s*\\{"]
}

Options

| Option | Type | Default | Description | |--------|------|---------|-------------| | paths | string[] | ["lib"] | Paths to scan for dependencies | | dependency_patterns | string[] | null | Regex patterns to filter which files generate reverse dependencies |

Dependency Patterns

The dependency_patterns option allows you to control which files generate reverse dependencies. This is useful when you only want to rebuild dependents for specific types of files (like enums).

Example: When using json_serializable, enums are regenerated in every model that uses them. To ensure models are rebuilt when an enum changes:

dependency_patterns:
  - "^\\s*enum\\s+\\w+\\s*\\{"

| Pattern Part | Meaning | |--------------|---------| | ^ | Start of line | | \\s* | Zero or more whitespace | | enum | The enum keyword | | \\s+ | One or more whitespace | | \\w+ | Enum name | | \\s* | Zero or more whitespace | | \\{ | Opening brace |

This pattern matches enum declarations like:

enum UserStatus {      // ✓ matches
  active,
  inactive,
}

But does NOT match:

import 'user_status_enum.dart';  // ✗ not a declaration
// enum commented                  // ✗ comment

What happens

  1. Detects modified .dart files (staged + unstaged)
  2. Expands with reverse dependencies (if sr deps was run)
  3. Backs up build.yaml to build.yaml.lock
  4. Modifies build.yaml adding generate_for with files to build
  5. Runs fvm dart run build_runner build --delete-conflicting-outputs
  6. Protects modified files and their generated counterparts
  7. Reverts unintended deletions
  8. Restores build.yaml from backup

Commands

| Command | Description | |---------|-------------| | sr | Run build_runner on modified files | | sr deps | Scan and cache file dependencies | | sr deps --force | Force full rescan ignoring cache |

Requirements

  • Node.js >= 18
  • FVM
  • Git
  • Dart/Flutter project with pubspec.yaml and build.yaml

License

MIT