Skip to content

Get minimum version required by a peerDependency

License

Notifications You must be signed in to change notification settings

ext/npm-min-peer

Folders and files

NameName
Last commit message
Last commit date
Mar 11, 2025
Feb 10, 2024
Apr 2, 2023
Sep 7, 2024
May 8, 2022
May 8, 2022
May 8, 2022
May 8, 2022
Feb 7, 2025
May 7, 2022
May 9, 2022
Mar 11, 2025
Mar 25, 2025
Mar 25, 2025
May 8, 2022
May 8, 2022

Repository files navigation

npm-min-peer

Build Coverage Status

Get minimum version required by a peerDependency.

This is typically useful when running a matrix CI pipeline when you want to test all supported versions of a dependency.

Usage

npx min-min-peer PACKAGE [--help] [--version] [--major MAJOR] [--with-name]

Use --help to see full usage help.

Use --version to see package version.

Use --major to specify which major version to use when finding the minumum. Major can be specified using any of the following formats:

  • 1
  • "1"
  • "1.x"
  • "v1"
  • "v1.x"

Use --with-name to include the package name in output.

The exit code will be non-zero if the major is not supported or the package is not found.

Given a package.json like:

{
  "name": "my-fancy-package",
  "version": "1.2.3",
  "peerDependency": {
    "my-fancy-dependency": "^3.4.5 || >= 4.0.0"
  }
}

the output from the tool will be:

$ npx npm-min-peer my-fancy-dependency
3.4.5
$ npx npm-min-peer my-fancy-dependency --major 3
3.4.5
$ npx npm-min-peer my-fancy-dependency --major 4 --with-name
my-fancy-dependency@4.0.0

Usage with Github Actions

jobs:
  build:
    strategy:
      matrix:
        version: [3, 4, 5]
    steps:
      - name: Install dependencies
        run: npm ci
      - name: Install my-fancy-dependency v${{ matrix.version }}
        run: npm install --no-save $(npx -y npm-min-peer my-fancy-dependency --major ${{ matrix.version }} --with-name)
      - name: Run tests
        run: npm test

Usage with Gitlab CI

my-fancy-dependency:
  parallel:
    matrix:
      - VERSION: [3, 4, 5]
  before_script:
    - npm ci
    - npm install --no-save $(npx -y npm-min-peer my-fancy-dependency --major ${VERSION} --with-name)
  script:
    - npm test

API

This can also be used with an API:

import { getMinPeer } from "npm-min-peer";

console.log(await getMinPeer("my-fancy-dependency")); // > 3.4.5
console.log(await getMinPeer("my-fancy-dependency", { major: 4, withName: true })); // > my-fancy-dependency@4.0.0

getMinPeer(pkgName: string, options?: Options): Promise<string>

  • pkgName - name of the peerDependency to get version for.
  • options.major - Major version (corresponding to --major)
  • options.withName - Include name in output (corresponding to --with-name)
  • options.pkgFile - Path to package.json to read (default: find closest package.json by traversing filesystem).

Returns promise resolved with package version or rejected if the package could not be found or does not match the given major version.