fix(run-lifecycle): lifecycle events should run to completion in series #3262
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.
During the difficult migration from
npm-lifecycle
to@npmcli/run-script
(because of lack of details fromnpm
) we missed the fact (because it is undocumented) thatnpm-lifecycle
actually maintains a queue for lifecycle processes and so even though they are eagerly invoked they will complete in series.This PR adds back some equivalent behavior to the new usage with
@npmcli/run-script
by utilizing the existingp-queue
library that lerna depends upon.It also enables a streaming/process inheritance based approach for the "let lerna publish do all the things case".
PS. This issue was discovered as a result of troubleshooting why it was that ionic needed to downgrade from v4 to v5 here: ionic-team/ionic-framework#25497
The reason this issue doesn't affect everyone in the same way as them is because ionic are running their whole build process via publish lifecycle scripts, instead of as a separate step before running publish (which is the more common pattern)