Skip to content

Conversation

@fewwan
Copy link

@fewwan fewwan commented Oct 19, 2025

This PR fixes an issue where only the main project’s ignore patterns and output directory were considered when building the final ignore list.
As a result, subprojects’ ignore rules and outputs were not excluded properly when using broadcast.

Why it matters
The ignore list is used by the --watch option to determine which files should trigger rebuilds.
Previously, since subproject build directories were not ignored, any file changes inside them would cause infinite rebuild loops, showing the build triggered repeatedly warning.
This fix prevents that by correctly ignoring all subprojects’ output and ignore paths.

Changes

  • Updated the ignore property to:
    • Include each subproject’s ignore list.
    • Include each subproject’s output directory.
  • Deduplicates entries using a set while maintaining the same return type.

Example

Project structure

packs/
├── foo/
│   ├── build/
│   └── beet.yml
├── bar/
│   ├── baz/
│   ├── build/
│   └── beet.yml
└── beet.yml

Configs
packs/foo/beet.yml

output: build

packs/bar/beet.yml

output: build
ignore:
  - baz

beet.yml

broadcast: packs/*
extend: [beet.yml]

Before

Changes in any of the following directories would cause an infinite rebuild loop:

packs/foo/build
packs/bar/build
packs/bar/baz

After

All subprojects’ ignore and output directories are properly ignored, and the watch now behaves as expected.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant