Get minimum version required by a peerDependency
npm install npm-min-peernpm-min-peer

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.
> 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:
``json`
{
"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
`yaml`
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
`yaml`
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
This can also be used with an API:
`ts
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
`
- 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.