Skip to content
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

Add single source of truth for package versions #21608

Merged

Commits on Jun 3, 2021

  1. Add single source of truth for package versions

    The versioning scheme for `@next` releases does not include semver
    information. Like `@experimental`, the versions are based only on the
    hash, i.e. `0.0.0-<commit_sha>`. The reason we do this is to prevent
    the use of a tilde (~) or caret (^) to match a range of
    prerelease versions.
    
    For `@experimental`, I think this rationale still makes sense — those
    releases are very unstable, with frequent breaking changes. But `@next`
    is not as volatile. It represents the next stable release. So, I think
    we can afford to include an actual verison number at the beginning of
    the string instead of `0.0.0`.
    
    We can also add a label that indicates readiness of the upcoming
    release, like "alpha", "beta", "rc", etc.
    
    To prepare for this the new versioning scheme, I updated the build
    script. However, **this PR does not enable the new versioning scheme
    yet**. I left a TODO above the line that we'll change once we're ready.
    
    We need to specify the expected next version numbers for each package,
    somewhere. These aren't encoded anywhere today — we don't specify
    version numbers until right before publishing to `@latest`, using an
    interactive script: `prepare-release-from-npm`.
    
    Instead, what we can do is track these version numbers in a module. I
    added `ReactVersions.js` that acts as the single source of truth for
    every package's version. The build script uses this module to build the
    `@next` packages.
    
    In the future, I want to start building the `@latest` packages the same
    way we do `@next` and `@experimental`. (What we do now is download a
    `@next` release from npm and swap out its version numbers.) Then we
    could run automated tests in CI to confirm the packages are releasable,
    instead of waiting to verify that right before publish.
    acdlite committed Jun 3, 2021
    Configuration menu
    Copy the full SHA
    8ae4805 View commit details
    Browse the repository at this point in the history