Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ext/npm-min-peer
Get minimum version required by a peerDependency
https://github.com/ext/npm-min-peer
build ci github-actions hacktoberfest npm
Last synced: 26 days ago
JSON representation
Get minimum version required by a peerDependency
- Host: GitHub
- URL: https://github.com/ext/npm-min-peer
- Owner: ext
- License: mit
- Created: 2022-05-07T13:42:58.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-09-30T04:33:52.000Z (about 1 month ago)
- Last Synced: 2024-10-01T05:42:21.650Z (about 1 month ago)
- Topics: build, ci, github-actions, hacktoberfest, npm
- Language: TypeScript
- Homepage:
- Size: 2.72 MB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# `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
[email protected]
```### 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 })); // > [email protected]
```### `getMinPeer(pkgName: string, options?: Options): Promise`
- `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.