Skip to content

Semver-aware plugin for git-json-resolver — resolve JSON version conflicts with strategies like max, min, secure, and overrides.

License

Notifications You must be signed in to change notification settings

react18-tools/git-json-resolver-semver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

git-json-resolver-semver

test Maintainability codecov Version Downloads npm bundle size

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 version
  • semver-min → pick the lower version
  • semver-ours → prefer ours if valid, else (optionally) prefer valid theirs
  • semver-theirs → prefer theirs if valid, else (optionally) prefer valid ours

✨ Features

  • 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.

📦 Install

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

🚀 Usage

1. Direct Import

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"],
  },
});

2. Dynamic Loading

{
  "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;

⚙️ Behavior notes

  • 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).

⚙️ Strategies

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

🙏 Acknowledgments

License

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

```

About

Semver-aware plugin for git-json-resolver — resolve JSON version conflicts with strategies like max, min, secure, and overrides.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

  •  
  •  

Packages

No packages published