package-versioner 0.5.2 → 0.5.3
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/dist/index.cjs +21 -18
- package/dist/index.js +21 -18
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -334,7 +334,7 @@ function formatTag(version, versionPrefix, packageName, tagTemplate = "${prefix}
|
|
|
334
334
|
const template = packageName ? packageTagTemplate : tagTemplate;
|
|
335
335
|
return createTemplateString(template, variables);
|
|
336
336
|
}
|
|
337
|
-
function
|
|
337
|
+
function formatVersionPrefix(versionPrefix, scope) {
|
|
338
338
|
if (!versionPrefix) return "";
|
|
339
339
|
const cleanPrefix = versionPrefix.replace(/\/$/, "");
|
|
340
340
|
if (scope) {
|
|
@@ -395,12 +395,12 @@ async function lastMergeBranchName(branches, baseBranch) {
|
|
|
395
395
|
return null;
|
|
396
396
|
}
|
|
397
397
|
}
|
|
398
|
-
async function getLatestTagForPackage(packageName,
|
|
398
|
+
async function getLatestTagForPackage(packageName, versionPrefix) {
|
|
399
399
|
try {
|
|
400
400
|
const allTags = await (0, import_git_semver_tags.getSemverTags)({
|
|
401
|
-
tagPrefix
|
|
401
|
+
tagPrefix: versionPrefix
|
|
402
402
|
});
|
|
403
|
-
const packageTagPattern =
|
|
403
|
+
const packageTagPattern = versionPrefix ? new RegExp(`^${escapeRegExp(versionPrefix)}${escapeRegExp(packageName)}@`) : new RegExp(`^${escapeRegExp(packageName)}@`);
|
|
404
404
|
const packageTags = allTags.filter((tag) => packageTagPattern.test(tag));
|
|
405
405
|
return packageTags[0] || "";
|
|
406
406
|
} catch (error) {
|
|
@@ -446,11 +446,11 @@ var import_node_process3 = require("process");
|
|
|
446
446
|
var import_conventional_recommended_bump = require("conventional-recommended-bump");
|
|
447
447
|
var import_semver = __toESM(require("semver"), 1);
|
|
448
448
|
var STANDARD_BUMP_TYPES = ["major", "minor", "patch"];
|
|
449
|
-
async function calculateVersion(config, options
|
|
449
|
+
async function calculateVersion(config, options) {
|
|
450
450
|
const { latestTag, type, path: pkgPath, name, branchPattern } = options;
|
|
451
451
|
const { preset } = config;
|
|
452
|
-
const
|
|
453
|
-
const prereleaseIdentifier = options.prereleaseIdentifier ||
|
|
452
|
+
const originalPrefix = options.versionPrefix || "";
|
|
453
|
+
const prereleaseIdentifier = options.prereleaseIdentifier || config.prereleaseIdentifier;
|
|
454
454
|
const initialVersion = prereleaseIdentifier ? `0.0.1-${prereleaseIdentifier}` : "0.0.1";
|
|
455
455
|
const hasNoTags = !latestTag || latestTag === "";
|
|
456
456
|
function determineTagSearchPattern(packageName, prefix) {
|
|
@@ -459,9 +459,9 @@ async function calculateVersion(config, options, forcedType, configPrereleaseIde
|
|
|
459
459
|
}
|
|
460
460
|
return prefix;
|
|
461
461
|
}
|
|
462
|
-
const tagSearchPattern = determineTagSearchPattern(name,
|
|
462
|
+
const tagSearchPattern = determineTagSearchPattern(name, originalPrefix);
|
|
463
463
|
const escapedTagPattern = escapeRegExp(tagSearchPattern);
|
|
464
|
-
const specifiedType =
|
|
464
|
+
const specifiedType = type;
|
|
465
465
|
if (specifiedType) {
|
|
466
466
|
if (hasNoTags) {
|
|
467
467
|
return getPackageVersionFallback(
|
|
@@ -681,7 +681,7 @@ var PackageProcessor = class {
|
|
|
681
681
|
for (const pkg of pkgsToConsider) {
|
|
682
682
|
const name = pkg.packageJson.name;
|
|
683
683
|
const pkgPath = pkg.dir;
|
|
684
|
-
const formattedPrefix =
|
|
684
|
+
const formattedPrefix = formatVersionPrefix(this.versionPrefix);
|
|
685
685
|
let latestTagResult = "";
|
|
686
686
|
try {
|
|
687
687
|
latestTagResult = await getLatestTagForPackage(name, this.versionPrefix);
|
|
@@ -713,7 +713,7 @@ var PackageProcessor = class {
|
|
|
713
713
|
branchPattern: this.config.branchPattern,
|
|
714
714
|
baseBranch: this.config.baseBranch,
|
|
715
715
|
prereleaseIdentifier: this.config.prereleaseIdentifier,
|
|
716
|
-
type: this.config.
|
|
716
|
+
type: this.config.type
|
|
717
717
|
});
|
|
718
718
|
if (!nextVersion) {
|
|
719
719
|
continue;
|
|
@@ -809,14 +809,15 @@ function createSyncedStrategy(config) {
|
|
|
809
809
|
dryRun,
|
|
810
810
|
skipHooks
|
|
811
811
|
} = config;
|
|
812
|
-
const formattedPrefix =
|
|
812
|
+
const formattedPrefix = formatVersionPrefix(versionPrefix || "v");
|
|
813
813
|
const latestTag = await getLatestTag();
|
|
814
814
|
const nextVersion = await calculateVersion(config, {
|
|
815
815
|
latestTag,
|
|
816
816
|
versionPrefix: formattedPrefix,
|
|
817
817
|
branchPattern,
|
|
818
818
|
baseBranch,
|
|
819
|
-
prereleaseIdentifier
|
|
819
|
+
prereleaseIdentifier,
|
|
820
|
+
type: config.type
|
|
820
821
|
});
|
|
821
822
|
if (!nextVersion) {
|
|
822
823
|
log("No version change needed", "info");
|
|
@@ -887,7 +888,7 @@ function createSingleStrategy(config) {
|
|
|
887
888
|
throw createVersionError("PACKAGE_NOT_FOUND" /* PACKAGE_NOT_FOUND */, packageName);
|
|
888
889
|
}
|
|
889
890
|
const pkgPath = pkg.dir;
|
|
890
|
-
const formattedPrefix =
|
|
891
|
+
const formattedPrefix = formatVersionPrefix(versionPrefix || "v");
|
|
891
892
|
let latestTagResult = await getLatestTagForPackage(packageName, formattedPrefix);
|
|
892
893
|
if (!latestTagResult) {
|
|
893
894
|
const globalTagResult = await getLatestTag();
|
|
@@ -900,7 +901,8 @@ function createSingleStrategy(config) {
|
|
|
900
901
|
latestTag,
|
|
901
902
|
versionPrefix: formattedPrefix,
|
|
902
903
|
path: pkgPath,
|
|
903
|
-
name: packageName
|
|
904
|
+
name: packageName,
|
|
905
|
+
type: config.type
|
|
904
906
|
});
|
|
905
907
|
} catch (error) {
|
|
906
908
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
@@ -957,11 +959,12 @@ function createAsyncStrategy(config) {
|
|
|
957
959
|
skipHooks: config.skipHooks || false,
|
|
958
960
|
getLatestTag: dependencies.getLatestTag,
|
|
959
961
|
fullConfig: config,
|
|
962
|
+
// Extract common version configuration properties
|
|
960
963
|
config: {
|
|
961
964
|
branchPattern: config.branchPattern || [],
|
|
962
965
|
baseBranch: config.baseBranch || "main",
|
|
963
966
|
prereleaseIdentifier: config.prereleaseIdentifier,
|
|
964
|
-
|
|
967
|
+
type: config.type
|
|
965
968
|
}
|
|
966
969
|
};
|
|
967
970
|
const packageProcessor = new PackageProcessor(processorOptions);
|
|
@@ -1092,7 +1095,7 @@ async function run() {
|
|
|
1092
1095
|
).version(process.env.npm_package_version || "0.0.0").option(
|
|
1093
1096
|
"-c, --config <path>",
|
|
1094
1097
|
"Path to config file (defaults to version.config.json in current directory)"
|
|
1095
|
-
).option("-d, --dry-run", "Dry run (no changes made)", false).option("-b, --bump <type>", "
|
|
1098
|
+
).option("-d, --dry-run", "Dry run (no changes made)", false).option("-b, --bump <type>", "Specify bump type (patch|minor|major)").option("-p, --prerelease [identifier]", "Create prerelease version").option("-s, --synced", "Use synchronized versioning across all packages").option("-j, --json", "Output results as JSON", false).option("-t, --target <packages>", "Comma-delimited list of package names to target").parse(process.argv);
|
|
1096
1099
|
const options = program.opts();
|
|
1097
1100
|
if (options.json) {
|
|
1098
1101
|
enableJsonOutput(options.dryRun);
|
|
@@ -1102,7 +1105,7 @@ async function run() {
|
|
|
1102
1105
|
log(`Loaded configuration from ${options.config || "version.config.json"}`, "info");
|
|
1103
1106
|
if (options.dryRun) config.dryRun = true;
|
|
1104
1107
|
if (options.synced) config.synced = true;
|
|
1105
|
-
if (options.bump) config.
|
|
1108
|
+
if (options.bump) config.type = options.bump;
|
|
1106
1109
|
if (options.prerelease)
|
|
1107
1110
|
config.prereleaseIdentifier = options.prerelease === true ? "rc" : options.prerelease;
|
|
1108
1111
|
const cliTargets = options.target ? options.target.split(",").map((t) => t.trim()) : [];
|
package/dist/index.js
CHANGED
|
@@ -311,7 +311,7 @@ function formatTag(version, versionPrefix, packageName, tagTemplate = "${prefix}
|
|
|
311
311
|
const template = packageName ? packageTagTemplate : tagTemplate;
|
|
312
312
|
return createTemplateString(template, variables);
|
|
313
313
|
}
|
|
314
|
-
function
|
|
314
|
+
function formatVersionPrefix(versionPrefix, scope) {
|
|
315
315
|
if (!versionPrefix) return "";
|
|
316
316
|
const cleanPrefix = versionPrefix.replace(/\/$/, "");
|
|
317
317
|
if (scope) {
|
|
@@ -372,12 +372,12 @@ async function lastMergeBranchName(branches, baseBranch) {
|
|
|
372
372
|
return null;
|
|
373
373
|
}
|
|
374
374
|
}
|
|
375
|
-
async function getLatestTagForPackage(packageName,
|
|
375
|
+
async function getLatestTagForPackage(packageName, versionPrefix) {
|
|
376
376
|
try {
|
|
377
377
|
const allTags = await getSemverTags({
|
|
378
|
-
tagPrefix
|
|
378
|
+
tagPrefix: versionPrefix
|
|
379
379
|
});
|
|
380
|
-
const packageTagPattern =
|
|
380
|
+
const packageTagPattern = versionPrefix ? new RegExp(`^${escapeRegExp(versionPrefix)}${escapeRegExp(packageName)}@`) : new RegExp(`^${escapeRegExp(packageName)}@`);
|
|
381
381
|
const packageTags = allTags.filter((tag) => packageTagPattern.test(tag));
|
|
382
382
|
return packageTags[0] || "";
|
|
383
383
|
} catch (error) {
|
|
@@ -422,11 +422,11 @@ import { cwd as cwd3 } from "node:process";
|
|
|
422
422
|
import { Bumper } from "conventional-recommended-bump";
|
|
423
423
|
import semver from "semver";
|
|
424
424
|
var STANDARD_BUMP_TYPES = ["major", "minor", "patch"];
|
|
425
|
-
async function calculateVersion(config, options
|
|
425
|
+
async function calculateVersion(config, options) {
|
|
426
426
|
const { latestTag, type, path: pkgPath, name, branchPattern } = options;
|
|
427
427
|
const { preset } = config;
|
|
428
|
-
const
|
|
429
|
-
const prereleaseIdentifier = options.prereleaseIdentifier ||
|
|
428
|
+
const originalPrefix = options.versionPrefix || "";
|
|
429
|
+
const prereleaseIdentifier = options.prereleaseIdentifier || config.prereleaseIdentifier;
|
|
430
430
|
const initialVersion = prereleaseIdentifier ? `0.0.1-${prereleaseIdentifier}` : "0.0.1";
|
|
431
431
|
const hasNoTags = !latestTag || latestTag === "";
|
|
432
432
|
function determineTagSearchPattern(packageName, prefix) {
|
|
@@ -435,9 +435,9 @@ async function calculateVersion(config, options, forcedType, configPrereleaseIde
|
|
|
435
435
|
}
|
|
436
436
|
return prefix;
|
|
437
437
|
}
|
|
438
|
-
const tagSearchPattern = determineTagSearchPattern(name,
|
|
438
|
+
const tagSearchPattern = determineTagSearchPattern(name, originalPrefix);
|
|
439
439
|
const escapedTagPattern = escapeRegExp(tagSearchPattern);
|
|
440
|
-
const specifiedType =
|
|
440
|
+
const specifiedType = type;
|
|
441
441
|
if (specifiedType) {
|
|
442
442
|
if (hasNoTags) {
|
|
443
443
|
return getPackageVersionFallback(
|
|
@@ -657,7 +657,7 @@ var PackageProcessor = class {
|
|
|
657
657
|
for (const pkg of pkgsToConsider) {
|
|
658
658
|
const name = pkg.packageJson.name;
|
|
659
659
|
const pkgPath = pkg.dir;
|
|
660
|
-
const formattedPrefix =
|
|
660
|
+
const formattedPrefix = formatVersionPrefix(this.versionPrefix);
|
|
661
661
|
let latestTagResult = "";
|
|
662
662
|
try {
|
|
663
663
|
latestTagResult = await getLatestTagForPackage(name, this.versionPrefix);
|
|
@@ -689,7 +689,7 @@ var PackageProcessor = class {
|
|
|
689
689
|
branchPattern: this.config.branchPattern,
|
|
690
690
|
baseBranch: this.config.baseBranch,
|
|
691
691
|
prereleaseIdentifier: this.config.prereleaseIdentifier,
|
|
692
|
-
type: this.config.
|
|
692
|
+
type: this.config.type
|
|
693
693
|
});
|
|
694
694
|
if (!nextVersion) {
|
|
695
695
|
continue;
|
|
@@ -785,14 +785,15 @@ function createSyncedStrategy(config) {
|
|
|
785
785
|
dryRun,
|
|
786
786
|
skipHooks
|
|
787
787
|
} = config;
|
|
788
|
-
const formattedPrefix =
|
|
788
|
+
const formattedPrefix = formatVersionPrefix(versionPrefix || "v");
|
|
789
789
|
const latestTag = await getLatestTag();
|
|
790
790
|
const nextVersion = await calculateVersion(config, {
|
|
791
791
|
latestTag,
|
|
792
792
|
versionPrefix: formattedPrefix,
|
|
793
793
|
branchPattern,
|
|
794
794
|
baseBranch,
|
|
795
|
-
prereleaseIdentifier
|
|
795
|
+
prereleaseIdentifier,
|
|
796
|
+
type: config.type
|
|
796
797
|
});
|
|
797
798
|
if (!nextVersion) {
|
|
798
799
|
log("No version change needed", "info");
|
|
@@ -863,7 +864,7 @@ function createSingleStrategy(config) {
|
|
|
863
864
|
throw createVersionError("PACKAGE_NOT_FOUND" /* PACKAGE_NOT_FOUND */, packageName);
|
|
864
865
|
}
|
|
865
866
|
const pkgPath = pkg.dir;
|
|
866
|
-
const formattedPrefix =
|
|
867
|
+
const formattedPrefix = formatVersionPrefix(versionPrefix || "v");
|
|
867
868
|
let latestTagResult = await getLatestTagForPackage(packageName, formattedPrefix);
|
|
868
869
|
if (!latestTagResult) {
|
|
869
870
|
const globalTagResult = await getLatestTag();
|
|
@@ -876,7 +877,8 @@ function createSingleStrategy(config) {
|
|
|
876
877
|
latestTag,
|
|
877
878
|
versionPrefix: formattedPrefix,
|
|
878
879
|
path: pkgPath,
|
|
879
|
-
name: packageName
|
|
880
|
+
name: packageName,
|
|
881
|
+
type: config.type
|
|
880
882
|
});
|
|
881
883
|
} catch (error) {
|
|
882
884
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
@@ -933,11 +935,12 @@ function createAsyncStrategy(config) {
|
|
|
933
935
|
skipHooks: config.skipHooks || false,
|
|
934
936
|
getLatestTag: dependencies.getLatestTag,
|
|
935
937
|
fullConfig: config,
|
|
938
|
+
// Extract common version configuration properties
|
|
936
939
|
config: {
|
|
937
940
|
branchPattern: config.branchPattern || [],
|
|
938
941
|
baseBranch: config.baseBranch || "main",
|
|
939
942
|
prereleaseIdentifier: config.prereleaseIdentifier,
|
|
940
|
-
|
|
943
|
+
type: config.type
|
|
941
944
|
}
|
|
942
945
|
};
|
|
943
946
|
const packageProcessor = new PackageProcessor(processorOptions);
|
|
@@ -1068,7 +1071,7 @@ async function run() {
|
|
|
1068
1071
|
).version(process.env.npm_package_version || "0.0.0").option(
|
|
1069
1072
|
"-c, --config <path>",
|
|
1070
1073
|
"Path to config file (defaults to version.config.json in current directory)"
|
|
1071
|
-
).option("-d, --dry-run", "Dry run (no changes made)", false).option("-b, --bump <type>", "
|
|
1074
|
+
).option("-d, --dry-run", "Dry run (no changes made)", false).option("-b, --bump <type>", "Specify bump type (patch|minor|major)").option("-p, --prerelease [identifier]", "Create prerelease version").option("-s, --synced", "Use synchronized versioning across all packages").option("-j, --json", "Output results as JSON", false).option("-t, --target <packages>", "Comma-delimited list of package names to target").parse(process.argv);
|
|
1072
1075
|
const options = program.opts();
|
|
1073
1076
|
if (options.json) {
|
|
1074
1077
|
enableJsonOutput(options.dryRun);
|
|
@@ -1078,7 +1081,7 @@ async function run() {
|
|
|
1078
1081
|
log(`Loaded configuration from ${options.config || "version.config.json"}`, "info");
|
|
1079
1082
|
if (options.dryRun) config.dryRun = true;
|
|
1080
1083
|
if (options.synced) config.synced = true;
|
|
1081
|
-
if (options.bump) config.
|
|
1084
|
+
if (options.bump) config.type = options.bump;
|
|
1082
1085
|
if (options.prerelease)
|
|
1083
1086
|
config.prereleaseIdentifier = options.prerelease === true ? "rc" : options.prerelease;
|
|
1084
1087
|
const cliTargets = options.target ? options.target.split(",").map((t) => t.trim()) : [];
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "package-versioner",
|
|
3
3
|
"description": "A lightweight yet powerful CLI tool for automated semantic versioning based on Git history and conventional commits.",
|
|
4
|
-
"version": "0.5.
|
|
4
|
+
"version": "0.5.3",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"module": "./dist/index.mjs",
|