monorepo-next 8.0.3 → 8.0.4
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/package.json +1 -1
- package/src/build-release-graph.js +43 -23
package/package.json
CHANGED
@@ -45,11 +45,11 @@ function isReleaseTypeInRange(version, type, range) {
|
|
45
45
|
return semver.satisfies(semver.inc(version, type), range);
|
46
46
|
}
|
47
47
|
|
48
|
+
let shouldVersionBumpSymbol = Symbol('shouldVersionBump');
|
49
|
+
|
48
50
|
async function init({
|
49
51
|
dag,
|
50
52
|
releaseTrees,
|
51
|
-
releaseType,
|
52
|
-
shouldVersionBump = true,
|
53
53
|
}) {
|
54
54
|
let {
|
55
55
|
isPackage,
|
@@ -69,23 +69,30 @@ async function init({
|
|
69
69
|
}
|
70
70
|
}
|
71
71
|
|
72
|
-
if (!releaseType) {
|
73
|
-
releaseType = await module.exports.getReleaseType(name, cwd);
|
74
|
-
}
|
75
|
-
|
76
72
|
let canBumpVersion = !!(version && name);
|
77
73
|
let canPublish = isPackage;
|
78
|
-
let shouldBumpVersion = canBumpVersion && shouldVersionBump;
|
79
|
-
let shouldPublish = canPublish && shouldBumpVersion;
|
80
74
|
|
81
|
-
|
75
|
+
let shouldVersionBump = false;
|
76
|
+
|
77
|
+
let releaseTree = {
|
82
78
|
oldVersion: version,
|
83
|
-
releaseType,
|
79
|
+
releaseType: defaultReleaseType,
|
84
80
|
cwd,
|
85
81
|
name,
|
86
|
-
|
87
|
-
|
82
|
+
[shouldVersionBumpSymbol]() {
|
83
|
+
shouldVersionBump = true;
|
84
|
+
},
|
85
|
+
get shouldBumpVersion() {
|
86
|
+
return canBumpVersion && shouldVersionBump;
|
87
|
+
},
|
88
|
+
get shouldPublish() {
|
89
|
+
return canPublish && this.shouldBumpVersion;
|
90
|
+
},
|
88
91
|
};
|
92
|
+
|
93
|
+
releaseTrees[name] = releaseTree;
|
94
|
+
|
95
|
+
return releaseTree;
|
89
96
|
}
|
90
97
|
|
91
98
|
async function firstPass({
|
@@ -97,7 +104,14 @@ async function firstPass({
|
|
97
104
|
continue;
|
98
105
|
}
|
99
106
|
|
100
|
-
|
107
|
+
let {
|
108
|
+
packageName: name,
|
109
|
+
cwd,
|
110
|
+
} = dag.node;
|
111
|
+
|
112
|
+
let releaseTree = await init({ dag, releaseTrees });
|
113
|
+
|
114
|
+
releaseTree.releaseType = await module.exports.getReleaseType(name, cwd);
|
101
115
|
}
|
102
116
|
}
|
103
117
|
|
@@ -120,21 +134,19 @@ async function secondPass({
|
|
120
134
|
let doesPackageHaveChanges = !!releaseTrees[dag.node.packageName];
|
121
135
|
if (!doesPackageHaveChanges) {
|
122
136
|
let isDevDep = dag.dependencyType === 'devDependencies';
|
123
|
-
let shouldVersionBump = !shouldExcludeDevChanges || !isDevDep;
|
124
137
|
|
125
138
|
if (dag.node.isPackage && shouldInheritGreaterReleaseType && !isDevDep && shouldBumpInRangeDependencies) {
|
126
|
-
|
127
|
-
// it doesn't matter, and it is less confusing. It gets overwritten with the correct
|
128
|
-
// value based on all dependencies later.
|
129
|
-
await init({ dag, releaseTrees, releaseType: defaultReleaseType });
|
139
|
+
await init({ dag, releaseTrees });
|
130
140
|
} else if (!isReleaseTypeInRange(parent.oldVersion, parent.releaseType, dag.dependencyRange)) {
|
131
|
-
await init({ dag, releaseTrees
|
141
|
+
await init({ dag, releaseTrees });
|
132
142
|
} else if (shouldBumpInRangeDependencies) {
|
133
|
-
await init({ dag, releaseTrees
|
143
|
+
await init({ dag, releaseTrees });
|
134
144
|
} else {
|
135
145
|
return;
|
136
146
|
}
|
137
147
|
|
148
|
+
let shouldVersionBump = !(shouldExcludeDevChanges && isDevDep);
|
149
|
+
|
138
150
|
if (!shouldVersionBump) {
|
139
151
|
return;
|
140
152
|
}
|
@@ -160,6 +172,7 @@ function thirdPass({
|
|
160
172
|
releaseTrees,
|
161
173
|
packagesWithChanges,
|
162
174
|
shouldInheritGreaterReleaseType,
|
175
|
+
shouldExcludeDevChanges,
|
163
176
|
}) {
|
164
177
|
for (let { dag, changedReleasableFiles } of packagesWithChanges) {
|
165
178
|
if (!changedReleasableFiles.length) {
|
@@ -176,18 +189,24 @@ function thirdPass({
|
|
176
189
|
return;
|
177
190
|
}
|
178
191
|
|
192
|
+
let isDevDep = dag.dependencyType === 'devDependencies';
|
179
193
|
let currentReleaseType = current.releaseType;
|
180
|
-
|
181
194
|
let incomingReleaseType = parent ? parent.releaseType : currentReleaseType;
|
182
195
|
|
183
|
-
if (shouldInheritGreaterReleaseType &&
|
196
|
+
if (shouldInheritGreaterReleaseType && !isDevDep && isReleaseTypeLessThan(currentReleaseType, incomingReleaseType)) {
|
184
197
|
currentReleaseType = incomingReleaseType;
|
185
198
|
}
|
186
199
|
|
187
200
|
current.releaseType = currentReleaseType;
|
188
201
|
|
202
|
+
let shouldVersionBump = !(shouldExcludeDevChanges && isDevDep);
|
203
|
+
|
204
|
+
if (shouldVersionBump) {
|
205
|
+
current[shouldVersionBumpSymbol]();
|
206
|
+
}
|
207
|
+
|
189
208
|
for (let group of dag.node.dependents) {
|
190
|
-
if (
|
209
|
+
if (isCycle(group)) {
|
191
210
|
continue;
|
192
211
|
}
|
193
212
|
|
@@ -293,6 +312,7 @@ async function buildReleaseGraph({
|
|
293
312
|
releaseTrees,
|
294
313
|
packagesWithChanges,
|
295
314
|
shouldInheritGreaterReleaseType,
|
315
|
+
shouldExcludeDevChanges,
|
296
316
|
});
|
297
317
|
|
298
318
|
// dependents have now inherited release type
|