3.0.5 • Published 10 months ago

npm-min-peer v3.0.5

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

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 --major MAJOR

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.

3.0.4

10 months ago

3.0.5

10 months ago

3.0.3

1 year ago

3.0.2

2 years ago

3.0.1

2 years ago

3.0.0

2 years ago

2.0.0

2 years ago

1.0.0

4 years ago