diff --git a/src/version.js b/src/version.js index 8a6c428..2ec06bd 100644 --- a/src/version.js +++ b/src/version.js @@ -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(不符合格式) */