Skip to content

Commit de8bebc

Browse files
remorsesvzt7Andarist
authored
Fixed a crash in prerelease mode when a package misses the version field in its package.json (changesets#1589)
* Fixed the prerelease version parse * ignore packages without version * fix tsc errors * add changeset * tweak * Update .changeset/chilly-nights-repair.md --------- Co-authored-by: vzt7 <vzt7.zed@gmail.com> Co-authored-by: Mateusz Burzyński <mateuszburzynski@gmail.com>
1 parent f15b0d0 commit de8bebc

3 files changed

Lines changed: 55 additions & 0 deletions

File tree

.changeset/chilly-nights-repair.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
"@changesets/assemble-release-plan": patch
3+
"@changesets/cli": patch
4+
---
5+
6+
author: @remorses
7+
author: @vzt7
8+
9+
Fixed a crash in prerelease mode when a package misses the version field in its `package.json`

packages/assemble-release-plan/src/index.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,14 @@ function getPreInfo(
358358
// preVersion is the map between package name and its next pre version number.
359359
let preVersions = new Map<string, number>();
360360
for (const [, pkg] of packagesByName) {
361+
if (
362+
shouldSkipPackage(pkg, {
363+
ignore: config.ignore,
364+
allowPrivatePackages: config.privatePackages.tag,
365+
})
366+
) {
367+
continue;
368+
}
361369
preVersions.set(
362370
pkg.packageJson.name,
363371
getPreVersion(pkg.packageJson.version)

packages/cli/src/commands/version/version.test.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2990,6 +2990,44 @@ describe("pre", () => {
29902990
`);
29912991
});
29922992

2993+
it("should version successfully when skipping a private package without a version field", async () => {
2994+
const cwd = await testdir({
2995+
"package.json": JSON.stringify({
2996+
private: true,
2997+
workspaces: ["packages/*"],
2998+
}),
2999+
"packages/pkg-a/package.json": JSON.stringify({
3000+
name: "pkg-a",
3001+
private: true,
3002+
// no version
3003+
}),
3004+
"packages/pkg-b/package.json": JSON.stringify({
3005+
name: "pkg-b",
3006+
version: "1.0.0",
3007+
}),
3008+
});
3009+
await pre(cwd, { command: "enter", tag: "next" });
3010+
await writeChangeset(
3011+
{
3012+
releases: [{ name: "pkg-b", type: "patch" }],
3013+
summary: "a very useful summary for the first change",
3014+
},
3015+
cwd
3016+
);
3017+
await version(cwd, defaultOptions, modifiedDefaultConfig);
3018+
let packages = (await getPackages(cwd))!;
3019+
expect(packages.packages.map((x) => x.packageJson)).toEqual([
3020+
{
3021+
name: "pkg-a",
3022+
private: true,
3023+
},
3024+
{
3025+
name: "pkg-b",
3026+
version: "1.0.1-next.0",
3027+
},
3028+
]);
3029+
});
3030+
29933031
describe("linked", () => {
29943032
it("should work with linked", async () => {
29953033
let linkedConfig = {

0 commit comments

Comments
 (0)