Canary builds are named after the release candidate, so npm ranks them above it
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 74/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- shell
- Domain
- build-system, release
Research direction
Start with the root package.json and tools/build.sh, then trace how versions are selected for canary and tagged release builds. Confirm the resulting package versions against npm semver ordering, with canaries ranking below the release candidate while tagged releases retain their tag versions.
Written by the indexing model from the issue text.
Description
ng add @angular/fire@next and ng update @angular/fire@next install a canary, not the release candidate.
When #3674 was merged, 21.0.0-rc.0 was put in package.json, breaking with this repo's previous patterns. #3751 continued this break with 21.0.0-rc.1.
#3709 mitigated the symptom for ng add by writing the exact installed version into the user's package.json. But going back to the old pattern would simplify things further.
Details
- The root
package.jsonversion field holds21.0.0-rc.1, andtools/build.shspecifies each canary by appending-canary.<short sha>to that field.- Every merge to main therefore publishes
21.0.0-rc.1-canary.<sha>, which semver ranks above21.0.0-rc.1, because the middle identifier parses as the text1-canaryand text outranks a number.
- Every merge to main therefore publishes
ng add @angular/fire@nextinstalls a canary, not the release candidate. The Angular CLI resolves the tag, then writes the range^21.0.0-rc.1, and npm resolves that to21.0.0-rc.1-canary.95b3de1.ng update @angular/fire@nextdoes the same, and unlikeng addit leaves a range inpackage.jsonrather than an exact version, so the app can drift again on any later install.- The version field is not what a tagged release publishes.
tools/build.shtakes a tagged release's version from the tag name.- At the
19.0.0-rc.5tag the version field inpackage.jsonread19.0.0, yet the release published to npm from that tag is19.0.0-rc.5. - At the
20.0.1tag the field read20.0.0and the release published to npm is20.0.1.
- At the
- Releases through v20 named canaries after the release itself, for example
19.0.0-canary.<sha>, which ranks below every19.0.0-rc.N.- The release-candidate string first entered the version field in the v21 preparation commit (#3674).
Scope
Build and packaging. It does not remove the 25 canary builds already published on the 21 line, which keep outranking 21.0.0-rc.1 until 21.0.0 ships.
- Dominant language
- TypeScript
- Stars
- 7.8k
- Forks
- 2.2k
- Avg merge
- 3d 6h
- Merged PRs (30d)
- 5
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from angular/angularfire
-
comp: schematics type: bug version: current (v17+)
Difficulty 3/5 1-2 days Newbie friendliness 76/100
angular/angularfire#3768 ·
-
comp: docs type: chore version: current (v17+)
Difficulty 4/5 3-5 days Newbie friendliness 58/100
angular/angularfire#3764 ·
-
comp: firestore comp: ssr priority: P0 (critical) type: feature version: current (v17+)
angular/angularfire#3757 · 1 assignee ·
-
Six `firebase` entry points have no `@angular/fire` equivalent, so their exports are unreachable Opencomp: core type: feature
angular/angularfire#3755 · 1 assignee ·
-
comp: auth comp: ssr comp: zones type: bug
Difficulty 3/5 1-2 days Newbie friendliness 76/100
angular/angularfire#3748 ·
All issues in angular/angularfire
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
safetrustcr/dApp-SafeTrust#426 ·
-
area:workflow bug ready-for-agent
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
fil-donadoni/tolaria#4409 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
Fission-AI/OpenSpec#1960 ·
-
Add dependabot Open
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
corsairdev/corsair#1764 ·