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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "monorepo-next",
3
- "version": "8.0.3",
3
+ "version": "8.0.4",
4
4
  "description": "Detach monorepo packages from normal linking",
5
5
  "bin": {
6
6
  "next": "bin/next.js"
@@ -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
- return releaseTrees[name] = {
75
+ let shouldVersionBump = false;
76
+
77
+ let releaseTree = {
82
78
  oldVersion: version,
83
- releaseType,
79
+ releaseType: defaultReleaseType,
84
80
  cwd,
85
81
  name,
86
- shouldBumpVersion,
87
- shouldPublish,
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
- await init({ dag, releaseTrees });
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
- // We use `defaultReleaseType` here instead of `parent.releaseType` because
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, releaseType: defaultReleaseType, shouldVersionBump });
141
+ await init({ dag, releaseTrees });
132
142
  } else if (shouldBumpInRangeDependencies) {
133
- await init({ dag, releaseTrees, releaseType: defaultReleaseType, shouldVersionBump });
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 && dag.dependencyType !== 'devDependencies' && isReleaseTypeLessThan(currentReleaseType, incomingReleaseType)) {
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 (!group.node.isPackage || isCycle(group)) {
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