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 +2 -0
- package/bin/commands/release.js +1 -0
- package/package.json +3 -2
- package/src/release.js +60 -14
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]
|
package/bin/commands/release.js
CHANGED
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "monorepo-next",
|
3
|
-
"version": "9.
|
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.
|
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]
|
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
|
-
|
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
|
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
|
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
|
-
|
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
|
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
|
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
|
-
|
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
|
-
|
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 }) {
|