統一日誌格式與文件化,新增容錯回退、sha 已標記檢查與 v 前綴支援 #4

Merged
admin merged 7 commits from develop into master 2026-07-16 05:35:59 +00:00
Showing only changes of commit 9f6c2a2556 - Show all commits
+7 -5
View File
@@ -1,7 +1,7 @@
'use strict';
// 版號格式:X.Y.Z 或 X.Y.Z-beta.N不帶前綴)
const VERSION_PATTERN = /^(\d+)\.(\d+)\.(\d+)(?:-beta\.(\d+))?$/;
// 版號格式:X.Y.Z 或 X.Y.Z-beta.N可帶小寫 v 前綴,如 v1.2.3;解析時忽略前綴)
const VERSION_PATTERN = /^v?(\d+)\.(\d+)\.(\d+)(?:-beta\.(\d+))?$/;
// major / minor / patch 各位數上限;beta 號碼無上限
const MAX_DIGIT = 9;
@@ -9,17 +9,19 @@ const MAX_DIGIT = 9;
/**
* 解析版號字串為版號物件。
*
* 支援正式版(X.Y.Z)與 beta 版(X.Y.Z-beta.N)兩種格式
* 支援正式版(X.Y.Z)與 beta 版(X.Y.Z-beta.N)兩種格式
* 皆可帶小寫 v 前綴(如 v1.2.3),解析時忽略前綴、只取 v 之後的版本號;
* 用於逐一解析 git tag,把 tag 字串轉成可比較、可計算的結構化物件。
* 不符合格式(含 null、非字串轉出的值)一律回傳 null,不拋出例外。
*
* @param {string} text - 待解析的版號字串,格式為 X.Y.Z 或 X.Y.Z-beta.N
* @param {string} text - 待解析的版號字串,格式為 X.Y.Z 或 X.Y.Z-beta.N(可帶 v 前綴)
* @returns {?{major: number, minor: number, patch: number, beta: ?number}}
* 版號物件;beta 為 null 表示正式版,為數字表示 beta 序號。
* 輸入不符合版號格式時回傳 null。
* 輸入不符合版號格式時回傳 null。前綴 v 不會出現在回傳物件中。
*
* @example
* parse('1.2.3'); // => { major: 1, minor: 2, patch: 3, beta: null }
* parse('v1.2.3'); // => { major: 1, minor: 2, patch: 3, beta: null }(忽略 v 前綴)
* parse('1.2.3-beta.5'); // => { major: 1, minor: 2, patch: 3, beta: 5 }
* parse('v1.2'); // => null(不符合格式)
*/