Pre-release version fix (#12148)
* Ran updated release script to fix deps * Release script handles prerelease deps correctly * Update noop-renderer dependencies on reconciler package
This commit is contained in:
parent
be85544b89
commit
dc271876a2
|
@ -26,7 +26,7 @@
|
|||
"prop-types": "^15.6.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^16.0.0"
|
||||
"react": "^16.0.0 || 16.3.0-alpha.0"
|
||||
},
|
||||
"files": [
|
||||
"LICENSE",
|
||||
|
|
|
@ -14,6 +14,6 @@
|
|||
"object-assign": "^4.1.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^16.0.0"
|
||||
"react": "^16.0.0 || 16.3.0-alpha.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
"prop-types": "^15.6.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^16.0.0"
|
||||
"react": "^16.0.0 || 16.3.0-alpha.0"
|
||||
},
|
||||
"files": [
|
||||
"LICENSE",
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
"object-assign": "^4.1.1",
|
||||
"prop-types": "^15.6.0",
|
||||
"regenerator-runtime": "^0.11.0",
|
||||
"react-reconciler": "*"
|
||||
"react-reconciler": "* || 0.8.0-alpha.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^16.0.0"
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
"node": ">=0.10.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^16.0.0"
|
||||
"react": "^16.0.0 || 16.3.0-alpha.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"fbjs": "^0.8.16",
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
"prop-types": "^15.6.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^16.0.0"
|
||||
"react": "^16.0.0 || 16.3.0-alpha.0"
|
||||
},
|
||||
"files": [
|
||||
"LICENSE",
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
'use strict';
|
||||
|
||||
const {readJson, writeJson} = require('fs-extra');
|
||||
const {join} = require('path');
|
||||
const semver = require('semver');
|
||||
const {execUnlessDry, logPromise} = require('../utils');
|
||||
|
||||
const getReactReconcilerVersion = async cwd => {
|
||||
const path = join(cwd, 'packages', 'react-reconciler', 'package.json');
|
||||
const json = await readJson(path);
|
||||
return json.version;
|
||||
};
|
||||
|
||||
const update = async ({cwd, dry}) => {
|
||||
const path = join(cwd, 'packages', 'react-noop-renderer', 'package.json');
|
||||
const json = await readJson(path);
|
||||
|
||||
// IMPORTANT: This script must be run after update-package-versions,
|
||||
// Since it depends up the updated react-reconciler version.
|
||||
const reconcilerVersion = await getReactReconcilerVersion(cwd);
|
||||
|
||||
// There is no wildcard for semver that includes prerelease ranges as well.
|
||||
// This causes problems for our Yarn workspaces setup,
|
||||
// Since the noop-renderer depends on react-reconciler.
|
||||
// So we have a special case check for this that ensures semver compatibility.
|
||||
if (semver.prerelease(reconcilerVersion)) {
|
||||
json.dependencies['react-reconciler'] = `* || ${reconcilerVersion}`;
|
||||
} else {
|
||||
json.dependencies['react-reconciler'] = '*';
|
||||
}
|
||||
|
||||
await writeJson(path, json, {spaces: 2});
|
||||
|
||||
await execUnlessDry(
|
||||
`git commit -am "Updating dependencies for react-noop-renderer"`,
|
||||
{cwd, dry}
|
||||
);
|
||||
};
|
||||
|
||||
module.exports = async params => {
|
||||
return logPromise(update(params), 'Updating noop renderer dependencies');
|
||||
};
|
|
@ -30,30 +30,53 @@ const update = async ({cwd, dry, packages, version}) => {
|
|||
const updateProjectPackage = async project => {
|
||||
const path = join(cwd, 'packages', project, 'package.json');
|
||||
const json = await readJson(path);
|
||||
const prerelease = semver.prerelease(version);
|
||||
|
||||
// Unstable packages (eg version < 1.0) are treated specially:
|
||||
// Rather than use the release version (eg 16.1.0)-
|
||||
// We just auto-increment the minor version (eg 0.1.0 -> 0.2.0).
|
||||
// If we're doing a prerelease, we also append the suffix (eg 0.2.0-beta).
|
||||
if (semver.lt(json.version, '1.0.0')) {
|
||||
const prerelease = semver.prerelease(version);
|
||||
let suffix = '';
|
||||
if (prerelease) {
|
||||
suffix = `-${prerelease.join('.')}`;
|
||||
}
|
||||
|
||||
json.version = `0.${semver.minor(json.version) + 1}.0${suffix}`;
|
||||
// If this is a new pre-release, increment the minor.
|
||||
// Else just increment (or remove) the pre-release suffix.
|
||||
// This way our minor version isn't incremented unnecessarily with each prerelease.
|
||||
const minor = semver.prerelease(json.version)
|
||||
? semver.minor(json.version)
|
||||
: semver.minor(json.version) + 1;
|
||||
|
||||
json.version = `0.${minor}.0${suffix}`;
|
||||
} else {
|
||||
json.version = version;
|
||||
}
|
||||
|
||||
if (project !== 'react') {
|
||||
const peerVersion = json.peerDependencies.react.replace('^', '');
|
||||
let peerVersion = json.peerDependencies.react.replace('^', '');
|
||||
|
||||
// If the previous release was a pre-release version,
|
||||
// The peer dependency will contain multiple versions, eg "^16.0.0 || 16.3.0-alpha.0"
|
||||
// In this case, assume the first one will be the major and extract it.
|
||||
if (peerVersion.includes(' || ')) {
|
||||
peerVersion = peerVersion.split(' || ')[0];
|
||||
}
|
||||
|
||||
// Release engineers can manually update minor and bugfix versions,
|
||||
// But we should ensure that major versions always match.
|
||||
if (semver.major(version) !== semver.major(peerVersion)) {
|
||||
json.peerDependencies.react = `^${semver.major(version)}.0.0`;
|
||||
} else {
|
||||
json.peerDependencies.react = `^${peerVersion}`;
|
||||
}
|
||||
|
||||
// If this is a prerelease, update the react dependency as well.
|
||||
// A dependency on a major version won't satisfy a prerelease version.
|
||||
// So rather than eg "^16.0.0" we need "^16.0.0 || 16.3.0-alpha.0"
|
||||
if (prerelease) {
|
||||
json.peerDependencies.react += ` || ${version}`;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ const run = async () => {
|
|||
const runAutomatedTests = require('./build-commands/run-automated-tests');
|
||||
const runAutomatedBundleTests = require('./build-commands/run-automated-bundle-tests');
|
||||
const updateGit = require('./build-commands/update-git');
|
||||
const updateNoopRendererDependencies = require('./build-commands/update-noop-renderer-dependencies');
|
||||
const updatePackageVersions = require('./build-commands/update-package-versions');
|
||||
const updateYarnDependencies = require('./build-commands/update-yarn-dependencies');
|
||||
const validateVersion = require('./build-commands/validate-version');
|
||||
|
@ -42,6 +43,7 @@ const run = async () => {
|
|||
await updateYarnDependencies(params);
|
||||
await runAutomatedTests(params);
|
||||
await updatePackageVersions(params);
|
||||
await updateNoopRendererDependencies(params);
|
||||
await buildArtifacts(params);
|
||||
await runAutomatedBundleTests(params);
|
||||
await addGitTag(params);
|
||||
|
|
Loading…
Reference in New Issue