UNPKG

npm-min-peer

Version:

Get minimum version required by a peerDependency

104 lines (77 loc) 2.88 kB
# `npm-min-peer` [![Build](https://github.com/ext/npm-min-peer/workflows/Build/badge.svg)](https://github.com/ext/min-min-peer/actions?query=workflow%3ABuild) [![Coverage Status](https://coveralls.io/repos/github/ext/npm-min-peer/badge.svg?branch=master)](https://coveralls.io/github/ext/min-min-peer?branch=master) 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: ```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 ``` ### Usage with Github Actions ```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 ``` ### Usage with Gitlab CI ```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 ``` ## API 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 ``` ### `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.