@samitouri / QOS-React / commits / 0a8740db61

Build script correctly bumps prerelease deps (e.g. schedule) (#13576)

Brian Vaughn committed Sep 6, 2018 at 08:06 UTC 0a8740db61329eba42987d6ac619e7bf6e622a04
1 file changed +34 -22
scripts/release/build-commands/update-package-versions.js
+34 -22
@@ -10,6 +10,32 @@ const {join} = require('path');
10 const semver = require('semver');
11 const {execUnlessDry, logPromise} = require('../utils');
12
13 +const getNextVersion = (prevVersion, releaseVersion) => {
14 + const prerelease = semver.prerelease(releaseVersion);
15 +
16 + // Unstable packages (eg version < 1.0) are treated specially:
17 + // Rather than use the release version (eg 16.1.0)-
18 + // We just auto-increment the minor version (eg 0.1.0 -> 0.2.0).
19 + // If we're doing a prerelease, we also append the suffix (eg 0.2.0-beta).
20 + if (semver.lt(prevVersion, '1.0.0')) {
21 + let suffix = '';
22 + if (prerelease) {
23 + suffix = `-${prerelease.join('.')}`;
24 + }
25 +
26 + // If this is a new pre-release, increment the minor.
27 + // Else just increment (or remove) the pre-release suffix.
28 + // This way our minor version isn't incremented unnecessarily with each prerelease.
29 + const minor = semver.prerelease(prevVersion)
30 + ? semver.minor(prevVersion)
31 + : semver.minor(prevVersion) + 1;
32 +
33 + return `0.${minor}.0${suffix}`;
34 + } else {
35 + return releaseVersion;
36 + }
37 +};
38 +
39 const update = async ({cwd, dry, packages, version}) => {
40 try {
41 // Update root package.json
@@ -32,27 +58,8 @@ const update = async ({cwd, dry, packages, version}) => {
58 const json = await readJson(path);
59 const prerelease = semver.prerelease(version);
60
35 - // Unstable packages (eg version < 1.0) are treated specially:
36 - // Rather than use the release version (eg 16.1.0)-
37 - // We just auto-increment the minor version (eg 0.1.0 -> 0.2.0).
38 - // If we're doing a prerelease, we also append the suffix (eg 0.2.0-beta).
39 - if (semver.lt(json.version, '1.0.0')) {
40 - let suffix = '';
41 - if (prerelease) {
42 - suffix = `-${prerelease.join('.')}`;
43 - }
44 -
45 - // If this is a new pre-release, increment the minor.
46 - // Else just increment (or remove) the pre-release suffix.
47 - // This way our minor version isn't incremented unnecessarily with each prerelease.
48 - const minor = semver.prerelease(json.version)
49 - ? semver.minor(json.version)
50 - : semver.minor(json.version) + 1;
51 -
52 - json.version = `0.${minor}.0${suffix}`;
53 - } else {
54 - json.version = version;
55 - }
61 + // Unstable package version.
62 + json.version = getNextVersion(json.version, version);
63
64 if (project !== 'react' && json.peerDependencies) {
65 let peerVersion = json.peerDependencies.react.replace('^', '');
@@ -84,7 +91,12 @@ const update = async ({cwd, dry, packages, version}) => {
91 if (json.dependencies) {
92 Object.keys(json.dependencies).forEach(dependency => {
93 if (packages.indexOf(dependency) >= 0) {
87 - json.dependencies[dependency] = `^${version}`;
94 + const prevVersion = json.dependencies[dependency];
95 + const nextVersion = getNextVersion(
96 + prevVersion.replace('^', ''),
97 + version
98 + );
99 + json.dependencies[dependency] = `^${nextVersion}`;
100 }
101 });
102 }