release-it 17.4.2 → 17.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/config.js +3 -2
- package/lib/index.js +2 -2
- package/lib/plugin/version/Version.js +6 -6
- package/package.json +1 -1
- package/test/config.js +15 -0
- package/test/version.js +28 -0
package/lib/config.js
CHANGED
|
@@ -50,14 +50,15 @@ class Config {
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
expandPreReleaseShorthand(options) {
|
|
53
|
-
const { increment, preRelease, preReleaseId, snapshot } = options;
|
|
53
|
+
const { increment, preRelease, preReleaseId, snapshot, preReleaseBase } = options;
|
|
54
54
|
const isPreRelease = Boolean(preRelease) || Boolean(snapshot);
|
|
55
55
|
const inc = snapshot ? 'prerelease' : increment;
|
|
56
56
|
const preId = typeof preRelease === 'string' ? preRelease : typeof snapshot === 'string' ? snapshot : preReleaseId;
|
|
57
57
|
options.version = {
|
|
58
58
|
increment: inc,
|
|
59
59
|
isPreRelease,
|
|
60
|
-
preReleaseId: preId
|
|
60
|
+
preReleaseId: preId,
|
|
61
|
+
preReleaseBase
|
|
61
62
|
};
|
|
62
63
|
if (typeof snapshot === 'string' && options.git) {
|
|
63
64
|
// Pre set and hard code some options
|
package/lib/index.js
CHANGED
|
@@ -56,7 +56,7 @@ const runTasks = async (opts, di) => {
|
|
|
56
56
|
await runLifeCycleHook(plugin, 'init');
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
const { increment, isPreRelease, preReleaseId } = options.version;
|
|
59
|
+
const { increment, isPreRelease, preReleaseId, preReleaseBase } = options.version;
|
|
60
60
|
|
|
61
61
|
const name = await reduceUntil(plugins, plugin => plugin.getName());
|
|
62
62
|
const latestVersion = (await reduceUntil(plugins, plugin => plugin.getLatestVersion())) || '0.0.0';
|
|
@@ -67,7 +67,7 @@ const runTasks = async (opts, di) => {
|
|
|
67
67
|
process.exit(0);
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
const incrementBase = { latestVersion, increment, isPreRelease, preReleaseId };
|
|
70
|
+
const incrementBase = { latestVersion, increment, isPreRelease, preReleaseId, preReleaseBase };
|
|
71
71
|
|
|
72
72
|
const { snapshot } = config.options;
|
|
73
73
|
if (snapshot && (!incrementBase.latestVersion.startsWith('0.0.0') || incrementBase.latestVersion === '0.0.0')) {
|
|
@@ -16,10 +16,10 @@ const CHOICES = {
|
|
|
16
16
|
};
|
|
17
17
|
|
|
18
18
|
const getIncrementChoices = context => {
|
|
19
|
-
const { latestIsPreRelease, isPreRelease, preReleaseId } = context.version;
|
|
19
|
+
const { latestIsPreRelease, isPreRelease, preReleaseId, preReleaseBase } = context.version;
|
|
20
20
|
const types = latestIsPreRelease ? CHOICES.latestIsPreRelease : isPreRelease ? CHOICES.preRelease : CHOICES.default;
|
|
21
21
|
const choices = types.map(increment => ({
|
|
22
|
-
name: `${increment} (${semver.inc(context.latestVersion, increment, preReleaseId)})`,
|
|
22
|
+
name: `${increment} (${semver.inc(context.latestVersion, increment, preReleaseId, preReleaseBase)})`,
|
|
23
23
|
value: increment
|
|
24
24
|
}));
|
|
25
25
|
const otherChoice = {
|
|
@@ -87,7 +87,7 @@ class Version extends Plugin {
|
|
|
87
87
|
return Boolean(semver.valid(version));
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
incrementVersion({ latestVersion, increment, isPreRelease, preReleaseId }) {
|
|
90
|
+
incrementVersion({ latestVersion, increment, isPreRelease, preReleaseId, preReleaseBase }) {
|
|
91
91
|
if (increment === false) return latestVersion;
|
|
92
92
|
|
|
93
93
|
const latestIsPreRelease = this.isPreRelease(latestVersion);
|
|
@@ -102,12 +102,12 @@ class Version extends Plugin {
|
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
if (isPreRelease && !increment && latestIsPreRelease) {
|
|
105
|
-
return semver.inc(latestVersion, 'prerelease', preReleaseId);
|
|
105
|
+
return semver.inc(latestVersion, 'prerelease', preReleaseId, preReleaseBase);
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
if (this.config.isCI && !increment) {
|
|
109
109
|
if (isPreRelease) {
|
|
110
|
-
return semver.inc(latestVersion, 'prepatch', preReleaseId);
|
|
110
|
+
return semver.inc(latestVersion, 'prepatch', preReleaseId, preReleaseBase);
|
|
111
111
|
} else {
|
|
112
112
|
return semver.inc(latestVersion, 'patch');
|
|
113
113
|
}
|
|
@@ -115,7 +115,7 @@ class Version extends Plugin {
|
|
|
115
115
|
|
|
116
116
|
const normalizedType = RELEASE_TYPES.includes(increment) && isPreRelease ? `pre${increment}` : increment;
|
|
117
117
|
if (ALL_RELEASE_TYPES.includes(normalizedType)) {
|
|
118
|
-
return semver.inc(latestVersion, normalizedType, preReleaseId);
|
|
118
|
+
return semver.inc(latestVersion, normalizedType, preReleaseId, preReleaseBase);
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
const coercedVersion = !isValidVersion && semver.coerce(increment);
|
package/package.json
CHANGED
package/test/config.js
CHANGED
|
@@ -101,6 +101,7 @@ test('should expand pre-release shortcut', t => {
|
|
|
101
101
|
t.deepEqual(config.options.version, {
|
|
102
102
|
increment: 'major',
|
|
103
103
|
isPreRelease: true,
|
|
104
|
+
preReleaseBase: undefined,
|
|
104
105
|
preReleaseId: 'beta'
|
|
105
106
|
});
|
|
106
107
|
});
|
|
@@ -110,6 +111,7 @@ test('should expand pre-release shortcut (preRelease boolean)', t => {
|
|
|
110
111
|
t.deepEqual(config.options.version, {
|
|
111
112
|
increment: undefined,
|
|
112
113
|
isPreRelease: true,
|
|
114
|
+
preReleaseBase: undefined,
|
|
113
115
|
preReleaseId: undefined
|
|
114
116
|
});
|
|
115
117
|
});
|
|
@@ -119,6 +121,7 @@ test('should expand pre-release shortcut (without increment)', t => {
|
|
|
119
121
|
t.deepEqual(config.options.version, {
|
|
120
122
|
increment: undefined,
|
|
121
123
|
isPreRelease: true,
|
|
124
|
+
preReleaseBase: undefined,
|
|
122
125
|
preReleaseId: 'alpha'
|
|
123
126
|
});
|
|
124
127
|
});
|
|
@@ -128,15 +131,27 @@ test('should expand pre-release shortcut (including increment and npm.tag)', t =
|
|
|
128
131
|
t.deepEqual(config.options.version, {
|
|
129
132
|
increment: 'minor',
|
|
130
133
|
isPreRelease: true,
|
|
134
|
+
preReleaseBase: undefined,
|
|
131
135
|
preReleaseId: 'rc'
|
|
132
136
|
});
|
|
133
137
|
});
|
|
134
138
|
|
|
139
|
+
test('should use pre-release base', t => {
|
|
140
|
+
const config = new Config({ increment: 'minor', preRelease: 'next', preReleaseBase: '1' });
|
|
141
|
+
t.deepEqual(config.options.version, {
|
|
142
|
+
increment: 'minor',
|
|
143
|
+
isPreRelease: true,
|
|
144
|
+
preReleaseBase: '1',
|
|
145
|
+
preReleaseId: 'next'
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
|
|
135
149
|
test('should expand pre-release shortcut (snapshot)', t => {
|
|
136
150
|
const config = new Config({ snapshot: 'feat' });
|
|
137
151
|
t.deepEqual(config.options.version, {
|
|
138
152
|
increment: 'prerelease',
|
|
139
153
|
isPreRelease: true,
|
|
154
|
+
preReleaseBase: undefined,
|
|
140
155
|
preReleaseId: 'feat'
|
|
141
156
|
});
|
|
142
157
|
t.is(config.options.git.tagMatch, '0.0.0-feat.[0-9]*');
|
package/test/version.js
CHANGED
|
@@ -138,6 +138,34 @@ test('should increment version (patch release after pre-release)', t => {
|
|
|
138
138
|
t.is(v.incrementVersion({ latestVersion: '1.2.3-alpha.1', increment: 'patch' }), '1.2.3');
|
|
139
139
|
});
|
|
140
140
|
|
|
141
|
+
test('should increment version and start at base 1', t => {
|
|
142
|
+
const v = factory(Version);
|
|
143
|
+
t.is(
|
|
144
|
+
v.incrementVersion({
|
|
145
|
+
latestVersion: '1.3.0',
|
|
146
|
+
increment: 'major',
|
|
147
|
+
isPreRelease: true,
|
|
148
|
+
preReleaseId: 'beta',
|
|
149
|
+
preReleaseBase: '1'
|
|
150
|
+
}),
|
|
151
|
+
'2.0.0-beta.1'
|
|
152
|
+
);
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
test('should increment prerelease version and ignore prelease base 1', t => {
|
|
156
|
+
const v = factory(Version);
|
|
157
|
+
t.is(
|
|
158
|
+
v.incrementVersion({
|
|
159
|
+
latestVersion: '1.2.3-alpha.5',
|
|
160
|
+
increment: 'prerelease',
|
|
161
|
+
preReleaseId: 'alpha',
|
|
162
|
+
isPreRelease: true,
|
|
163
|
+
preReleaseBase: '1'
|
|
164
|
+
}),
|
|
165
|
+
'1.2.3-alpha.6'
|
|
166
|
+
);
|
|
167
|
+
});
|
|
168
|
+
|
|
141
169
|
test('should run tasks without errors', async t => {
|
|
142
170
|
const options = { version: { increment: 'minor' } };
|
|
143
171
|
const v = factory(Version, { options });
|