diff --git a/scripts/publish.mjs b/scripts/publish.mjs
index f22119df9381c7ea4faf8e24ec243f90a79bafa9..6c2e471a5b24a57343dcd248bf25cf0c30f212af 100644
--- a/scripts/publish.mjs
+++ b/scripts/publish.mjs
@@ -11,10 +11,16 @@ async function resolvePublish() {
 
   let [a, b, c] = packageJson.version.split(".").map(Number);
 
-  if (flag === "major") a += 1;
-  else if (flag === "minor") b += 1;
-  else if (flag === "patch") c += 1;
-  else throw new Error(`invalid flag "${flag}"`);
+  if (flag === "major") {
+    a += 1;
+    b = 0;
+    c = 0;
+  } else if (flag === "minor") {
+    b += 1;
+    c = 0;
+  } else if (flag === "patch") {
+    c += 1;
+  } else throw new Error(`invalid flag "${flag}"`);
 
   const nextVersion = `${a}.${b}.${c}`;
   packageJson.version = nextVersion;