-
Notifications
You must be signed in to change notification settings - Fork 609
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[heft] Merge Heft RC to main #4145
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…L/web-build-tools into user/danade/MultiPhaseHeft
…L/web-build-tools into user/danade/MultiPhaseHeftCore
…er/danade/MultiPhaseHeftCore
…er/danade/MultiPhaseHeft
This reverts commit a3f83cd.
Co-authored-by: Ian Clanton-Thuon <[email protected]>
Co-authored-by: Ian Clanton-Thuon <[email protected]>
…er/danade/MultiPhaseHeft
[heft-next] Documentation / Config polish
[heft-next] Fix change files in RC relative to main
[heft-next] Prepare change files for merge
dmichon-msft
requested review from
iclanton,
octogonz,
apostolisms,
D4N14L,
TheLarkInn and
patmill
as code owners
June 1, 2023 23:03
iclanton
reviewed
Jun 1, 2023
iclanton
reviewed
Jun 1, 2023
iclanton
reviewed
Jun 1, 2023
[heft-next] Fix versions in docs and new plugins
iclanton
reviewed
Jun 1, 2023
iclanton
approved these changes
Jun 2, 2023
D4N14L
approved these changes
Jun 2, 2023
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🫡
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Merging the RC branch for heft-next into main.
Details
Fixes #3181 - See for the main discussion of the design of this overhaul.
At a high level, refactors Heft to support more granular build phases than merely
build
andtest
.Heft will now internally perform task-based scheduling in a manner analogous to Rush, with the addition of treating watch mode as a first-class scenario all the way through the pipeline.
Configurability
The core Heft package no longer contains API-Extractor, TypeScript, or ESLint/TSLint support. These are now all their own separate plugin packages, so consumers that wish to use Heft without some or all of the above can do so without paying the cost of loading those features.
The
heft.json
file now specifies one or more named phases, each of which is expected to contain zero or more named tasks, forming a directed acyclic task graph. Each task invokes either exactly one plugin or exactly one "event" (which are just shorthand for calling utility plugins).Boot Performance
All heft plugin packages are now required to provide a
heft-plugin.json
manifest, which provides a list of one or more plugin entry points, the options schemas, and any command line parameter definitions that are applicable to the plugins. This allows the Heft runtime to load the manifest files and determine what tasks to execute without having to load the plugin code itself until it is needed.This avoids situations where a given Heft plugin may contain very expensive initialization code that is executed even for Heft commands that don't invoke the plugin.
Watch Mode
Plugins configured for watch mode are expected to perform their own file watching, though may utilize a provided
watchGlobAsync
hook for simple watch scenarios, and invoke arequestRun
callback when changes are detected.When the
requestRun
callback is invoked (either directly or internally bywatchGlobAsync
), the Heft scheduler determines if the change impacts work that has already completed, in which case it will abort any current run and start a new one, or only future work, in which case it proceeds normally.How it was tested
Local runs, use of the RC in other repositories.
Impacted documentation
All Heft documentation.