mirror of
https://github.com/zebrajr/react.git
synced 2025-12-07 00:20:28 +01:00
The "next" prerelease channel represents what will be published the next time we do a stable release. We publish a new "next" release every day using a timed CI workflow. When we introduced this prerelease channel a few years ago, another name we considered was "canary". But I proposed "next" instead to create a greater distinction between this channel and the "experimental" channel (which is published at the same cadence, but includes extra experimental features), because some other projects use "canary" to refer to releases that are more unstable than how we would use it. The main downside of "next" is someone might mistakenly assume the name refers to Next.js. We were aware of this risk at the time but didn't think it would be an issue in practice. However, colloquially, we've ended up referring to this as the "canary" channel anyway to avoid precisely that confusion. So after further discussion, we've agreed to rename to "canary". This affects the label used in the version string (e.g. `18.3.0-next-a1c2d3e4` becomes `18.3.0-canary-a1c2d3e4`) as well as the npm dist tags used to publish the releases. For now, I've chosen to publish the canaries using both `@canary` and `@next` dist tags, so that downstream consumers who might depend on `@next` have time to adjust. We can remove that later after the change has been communicated.
58 lines
1.7 KiB
JavaScript
58 lines
1.7 KiB
JavaScript
'use strict';
|
|
|
|
// This module is the single source of truth for versioning packages that we
|
|
// publish to npm.
|
|
//
|
|
// Packages will not be published unless they are added here.
|
|
//
|
|
// The @latest channel uses the version as-is, e.g.:
|
|
//
|
|
// 18.3.0
|
|
//
|
|
// The @canary channel appends additional information, with the scheme
|
|
// <version>-<label>-<commit_sha>, e.g.:
|
|
//
|
|
// 18.3.0-canary-a1c2d3e4
|
|
//
|
|
// The @experimental channel doesn't include a version, only a date and a sha, e.g.:
|
|
//
|
|
// 0.0.0-experimental-241c4467e-20200129
|
|
|
|
const ReactVersion = '18.3.0';
|
|
|
|
// The label used by the @canary channel. Represents the upcoming release's
|
|
// stability. Most of the time, this will be "canary", but we may temporarily
|
|
// choose to change it to "alpha", "beta", "rc", etc.
|
|
//
|
|
// It only affects the label used in the version string. To customize the
|
|
// npm dist tags used during publish, refer to .circleci/config.yml.
|
|
const canaryChannelLabel = 'canary';
|
|
|
|
const stablePackages = {
|
|
'eslint-plugin-react-hooks': '5.0.0',
|
|
'jest-react': '0.15.0',
|
|
react: ReactVersion,
|
|
'react-art': ReactVersion,
|
|
'react-dom': ReactVersion,
|
|
'react-server-dom-webpack': ReactVersion,
|
|
'react-is': ReactVersion,
|
|
'react-reconciler': '0.30.0',
|
|
'react-refresh': '0.15.0',
|
|
'react-test-renderer': ReactVersion,
|
|
'use-subscription': '1.9.0',
|
|
'use-sync-external-store': '1.3.0',
|
|
scheduler: '0.24.0',
|
|
};
|
|
|
|
// These packages do not exist in the @canary or @latest channel, only
|
|
// @experimental. We don't use semver, just the commit sha, so this is just a
|
|
// list of package names instead of a map.
|
|
const experimentalPackages = [];
|
|
|
|
module.exports = {
|
|
ReactVersion,
|
|
canaryChannelLabel,
|
|
stablePackages,
|
|
experimentalPackages,
|
|
};
|