mirror of
https://github.com/zebrajr/react.git
synced 2025-12-07 00:20:28 +01:00
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.
17 lines
771 B
JavaScript
17 lines
771 B
JavaScript
/**
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
// TODO: this is special because it gets imported during build.
|
|
//
|
|
// TODO: 17.0.3 has not been released to NPM;
|
|
// It exists as a placeholder so that DevTools can support work tag changes between releases.
|
|
// When we next publish a release (either 17.0.3 or 17.1.0), update the matching TODO in backend/renderer.js
|
|
// TODO: This module is used both by the release scripts and to expose a version
|
|
// at runtime. We should instead inject the version number as part of the build
|
|
// process, and use the ReactVersions.js module as the single source of truth.
|
|
export default '17.0.3';
|