monorepo-next 9.2.6 → 9.3.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/README.md CHANGED
@@ -115,6 +115,8 @@ Options:
115
115
  --version Show version number [boolean]
116
116
  --silent Don't print logs and errors
117
117
  [boolean] [default: false]
118
+ --dry-run log to console instead of modifying files
119
+ [boolean] [default: false]
118
120
  --push git push + tags when done
119
121
  [boolean] [default: true]
120
122
  --publish npm publish when done[boolean] [default: true]
@@ -10,6 +10,7 @@ module.exports = {
10
10
  describe: 'release all packages as needed',
11
11
  builder: {
12
12
  'silent': commonArgs['silent'],
13
+ 'dry-run': commonArgs['dry-run'],
13
14
  'push': {
14
15
  describe: 'git push + tags when done',
15
16
  type: 'boolean',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "monorepo-next",
3
- "version": "9.2.6",
3
+ "version": "9.3.0",
4
4
  "description": "Detach monorepo packages from normal linking",
5
5
  "bin": {
6
6
  "next": "bin/next.js"
@@ -68,7 +68,7 @@
68
68
  "minimatch": "^5.0.0",
69
69
  "npm-packlist": "^6.0.0",
70
70
  "rfc6902": "^5.0.0",
71
- "semver": "7.5.0",
71
+ "semver": "7.5.1",
72
72
  "standard-version": "9.5.0",
73
73
  "superset": "^2.0.1",
74
74
  "tmp": "0.2.1",
@@ -86,6 +86,7 @@
86
86
  "eslint-plugin-mocha": "^10.0.0",
87
87
  "eslint-plugin-node": "^11.0.0",
88
88
  "fixturify": "^3.0.0",
89
+ "fs-extra": "^11.1.1",
89
90
  "git-fixtures": "^5.0.0",
90
91
  "mocha": "^10.0.0",
91
92
  "mocha-helpers": "^7.0.0",
package/src/release.js CHANGED
@@ -15,12 +15,13 @@ const {
15
15
  getWorkspaceCwd,
16
16
  getCurrentCommit,
17
17
  } = require('./git');
18
-
18
+ const semver = require('semver');
19
19
  const { builder } = require('../bin/commands/release');
20
20
 
21
21
  async function release({
22
22
  cwd = process.cwd(),
23
23
  silent,
24
+ dryRun = builder['dry-run'].default,
24
25
  shouldPush = builder['push'].default,
25
26
  shouldPublish = builder['publish'].default,
26
27
  shouldBumpInRangeDependencies = builder['bump-in-range-dependencies'].default,
@@ -75,7 +76,9 @@ async function release({
75
76
  let packageJsonPath = path.join(cwd, 'package.json');
76
77
  let packageJson = await readJson(packageJsonPath);
77
78
 
78
- if (releaseTree.oldVersion) {
79
+ if (releaseTree.oldVersion && releaseTree.oldVersion !== packageJson.version) {
80
+ log(`Updating ${packageJson.name} from ${packageJson.version} to ${releaseTree.oldVersion}.`);
81
+
79
82
  packageJson.version = releaseTree.oldVersion;
80
83
  }
81
84
 
@@ -83,11 +86,19 @@ async function release({
83
86
  let deps = releaseTree[type];
84
87
 
85
88
  for (let [name, newRange] of Object.entries(deps)) {
86
- packageJson[type][name] = newRange;
89
+ let oldRange = packageJson[type][name];
90
+
91
+ if (newRange !== oldRange) {
92
+ log(`Updating ${packageJson.name} ${type} ${name} from ${oldRange} to ${newRange}.`);
93
+
94
+ packageJson[type][name] = newRange;
95
+ }
87
96
  }
88
97
  }
89
98
 
90
- await writeJson(packageJsonPath, packageJson);
99
+ if (!dryRun) {
100
+ await writeJson(packageJsonPath, packageJson);
101
+ }
91
102
 
92
103
  // eslint-disable-next-line no-inner-declarations
93
104
  async function originalVersion(options) {
@@ -98,6 +109,7 @@ async function release({
98
109
  tag: true,
99
110
  },
100
111
  silent,
112
+ dryRun,
101
113
  tagPrefix: `${name}@`,
102
114
  releaseAs: releaseTree.releaseType,
103
115
  scripts,
@@ -125,7 +137,13 @@ async function release({
125
137
  process.chdir(originalCwd);
126
138
  }
127
139
 
128
- let { version } = await readJson(packageJsonPath);
140
+ let version;
141
+
142
+ if (dryRun) {
143
+ version = semver.inc(releaseTree.oldVersion, releaseTree.releaseType);
144
+ } else {
145
+ version = (await readJson(packageJsonPath)).version;
146
+ }
129
147
 
130
148
  // eslint-disable-next-line require-atomic-updates
131
149
  releaseTree.newVersion = version;
@@ -135,7 +153,7 @@ async function release({
135
153
  async function handleLifecycleScript(lifecycle) {
136
154
  let script = scripts[lifecycle];
137
155
  if (script) {
138
- await execa.command(script, {
156
+ await exec(execa.command, script, {
139
157
  shell: true,
140
158
  });
141
159
  }
@@ -147,38 +165,45 @@ async function release({
147
165
 
148
166
  let commitMessage = `chore(release): ${tags.join()}`;
149
167
 
150
- await execa('git', ['add', '-A'], { cwd: workspaceCwd });
168
+ if (!dryRun) {
169
+ await execa('git', ['add', '-A'], { cwd: workspaceCwd });
170
+ }
151
171
 
152
- await preCommitCallback();
172
+ await preCommitCallback({ dryRun });
153
173
 
154
174
  await handleLifecycleScript('precommit');
155
175
 
156
176
  let previousCommit = await getCurrentCommit(workspaceCwd);
157
177
 
158
- await execa('git', ['commit', '-m', commitMessage], { cwd: workspaceCwd });
178
+ await exec(execa, 'git', ['commit', '-m', commitMessage], { cwd: workspaceCwd });
159
179
 
160
180
  await handleLifecycleScript('postcommit');
161
181
 
162
182
  await handleLifecycleScript('pretag');
163
183
 
164
184
  for (let tag of tags) {
165
- await execa('git', ['tag', '-a', tag, '-m', tag], { cwd: workspaceCwd });
185
+ await exec(execa, 'git', ['tag', '-a', tag, '-m', tag], { cwd: workspaceCwd });
166
186
  }
167
187
 
168
188
  await handleLifecycleScript('posttag');
169
189
 
170
190
  async function originalPush() {
171
- await push({ cwd: workspaceCwd });
191
+ if (dryRun) {
192
+ log('push');
193
+ } else {
194
+ await push({ cwd: workspaceCwd });
195
+ }
172
196
  }
173
197
 
174
198
  if (shouldPush) {
175
- await prePushCallback();
199
+ await prePushCallback({ dryRun });
176
200
 
177
201
  try {
178
202
  if (pushOverride) {
179
203
  await pushOverride({
180
204
  cwd: workspaceCwd,
181
205
  originalPush,
206
+ dryRun,
182
207
  });
183
208
  } else {
184
209
  await originalPush();
@@ -195,7 +220,7 @@ async function release({
195
220
  }
196
221
 
197
222
  if (shouldPublish) {
198
- await prePublishCallback();
223
+ await prePublishCallback({ dryRun });
199
224
  }
200
225
 
201
226
  // eslint-disable-next-line require-atomic-updates
@@ -203,19 +228,40 @@ async function release({
203
228
  if (shouldPublish && _shouldPublish) {
204
229
  // eslint-disable-next-line no-inner-declarations
205
230
  async function originalPublish() {
206
- await publish({ cwd });
231
+ if (dryRun) {
232
+ log('publish');
233
+ } else {
234
+ await publish({ cwd });
235
+ }
207
236
  }
208
237
 
209
238
  if (publishOverride) {
210
239
  await publishOverride({
211
240
  cwd,
212
241
  originalPublish,
242
+ dryRun,
213
243
  });
214
244
  } else {
215
245
  await originalPublish();
216
246
  }
217
247
  }
218
248
  }
249
+
250
+ function exec(execa, ...args) {
251
+ if (dryRun) {
252
+ log(...args);
253
+ } else {
254
+ return execa.apply(this, args);
255
+ }
256
+ }
257
+
258
+ function log() {
259
+ if (silent) {
260
+ return;
261
+ }
262
+
263
+ console.log(...arguments);
264
+ }
219
265
  }
220
266
 
221
267
  async function push({ cwd }) {