Semver-aware plugin for git-json-resolver
— resolve JSON version conflicts (e.g., package.json
) via semantic-version strategies.
Strategies (this release):
semver-max
→ pick the higher versionsemver-min
→ pick the lower versionsemver-ours
→ prefer ours if valid, else (optionally) prefer valid theirssemver-theirs
→ prefer theirs if valid, else (optionally) prefer valid ours
- Avoid manual conflict resolution in
package.json
- Small & tree-shakable (0 runtime dependencies)
- Works with direct import or dynamic plugin loading
- TypeScript types included
Star the repo if it saved your merge. And and also share it with your friends.
pnpm add git-json-resolver-semver
or
npm install git-json-resolver-semver
or
yarn add git-json-resolver-semver
Peer dependencies:
pnpm install git-json-resolver
import { semverMax } from "git-json-resolver-semver";
import { resolveConflicts } from "git-json-resolver";
await resolveConflicts({
customStrategies: {
"semver-max": semverMax,
},
rules: {
"dependencies.react": ["semver-max"],
"devDependencies.vitest": ["semver-min"],
},
});
{
"plugins": ["git-json-resolver-semver"],
"rules": {
"dependencies.react": ["semver-max"],
"devDependencies.vitest": ["semver-min"]
}
}
or TypeScript Config
// git-json-resolver.config.ts
import type { Config } from "git-json-resolver";
const config: Config = {
plugins: ["git-json-resolver-semver"],
rules: {
"dependencies.react": ["semver-max"],
"devDependencies.vitest": ["semver-min"],
},
};
export default config;
- strict mode (default) accepts only
x.y.z
. Set non-strict to allow prereleases/ranges. - preferValid (default) returns the valid side when the other is invalid.
- fallback controls behavior when neither side is valid (
ours
|theirs
|continue
|error
).
Strategy | Behavior | Example (ours vs theirs ) |
Result |
---|---|---|---|
semver-max |
Picks the higher valid semver | 1.2.3 vs 1.3.0 |
1.3.0 |
semver-min |
Picks the lower valid semver | 2.0.0 vs 2.1.0 |
2.0.0 |
semver-ours |
Picks ours if valid semver, else apply preferValid / fallback |
1.2.3 vs banana |
1.2.3 |
semver-theirs |
Picks theirs if valid semver, else apply preferValid / fallback |
foo vs 2.0.0 |
2.0.0 |
git-json-resolver
for the plugin systemcompare-versions
for lightweight semver checks
This library is licensed under the MPL-2.0 open-source license.
Please enroll in our courses or sponsor our work.
with 💖 by Mayank Kumar Chaudhari
```