@springernature/util-package-finder
Version:
Get a list of packages and available versions from within an NPM scope
193 lines (152 loc) • 4.57 kB
Markdown
# Package Finder
[![NPM version][badge-npm]][info-npm]
[![Node version][badge-node]][info-node]
![MIT License][badge-license]
Get a list of packages and available versions from within an NPM scope. Returns the following information about a package:
* `name` the package name on NPM
* `latest` the latest version of the package
* `versions` array of all versions of the package (optional)
* `status` the status based on the latest version _(see below)_
* `description` the package description
* `npm` a link to the package on NPM
* `date` ISO 8601/W3C Datetime when last published
### Status
The status of a package is evaluated by checking the latest version and assigning one of the following:
| Status | Rule |
| --- | --- |
| production | `>= 1.0.0` |
| development | `>= 0.1.0`, `< 1.0.0` |
| experimental | `>= 0.0.1`, `< 0.1.0` |
## Install
```
$ npm install @springernature/util-package-finder
```
Installing `util-package-finder` adds command line exectuables to `./node_modules/.bin/`.
## API
```js
const packageFinder = require('@springernature/util-package-finder');
```
### packageFinder({options})
Return: `Promise<array>`<br/>
It resolves with an array of objects, with each object detailing a package within the scope
### options
#### scope
Type: `String`<br/>
Default: `springernature`<br/>
The scope to search within
#### filters
Type: `Array`<br/>
An array of `strings` that represent package prefixes used within the springernature toolkits
#### versions
Type: `Boolean`<br/>
Default: false<br/>
Get a list of all available versions
## Examples
```js
const packageFinder = require('util-package-finder');
packageFinder()
.then(response => {
console.log(response);
}).catch(err => {
console.error(err);
});
/*
[{ name: '@springernature/a-package',
latest: '0.1.2',
versions: null,
status: 'development',
description: 'a package',
npm: 'https://www.npmjs.com/package/%40springernature%2Fa-package',
date: '2019-03-08T11:55:38.384Z' },
{ name: '@springernature/b-package',
latest: '2.0.0',
versions: null,
status: 'production',
description: 'another package',
npm: 'https://www.npmjs.com/package/%40springernature%2Fb-package',
date: '2019-03-08T11:55:38.384Z' }]
*/
packageFinder({
filters: ['a']
})
.then(response => {
console.log(response);
}).catch(err => {
console.error(err);
});
/*
[{ name: '@springernature/a-package',
latest: '0.1.2',
versions: null,
status: 'development',
description: 'a package',
npm: 'https://www.npmjs.com/package/%40springernature%2Fa-package',
date: '2019-03-08T11:55:38.384Z' }]
*/
packageFinder({
scope: 'acme'
})
.then(response => {
console.log(response);
}).catch(err => {
console.error(err);
});
/*
[{ name: '@acme/a-package',
latest: '0.1.2',
versions: null,
status: 'development',
description: 'a package',
npm: 'https://www.npmjs.com/package/%40acme%2Fa-package',
date: '2019-03-08T11:55:38.384Z' }]
*/
packageFinder({
versions: true,
filters: ['a']
})
.then(response => {
console.log(response);
}).catch(err => {
console.error(err);
});
/*
[{ name: '@springernature/a-package',
latest: '0.1.2',
versions: ['0.1.0', '0.1.2'],
status: 'development',
description: 'a package',
npm: 'https://www.npmjs.com/package/%40springernature%2Fa-package',
date: '2019-03-08T11:55:38.384Z' }]
*/
```
## CLI
The package finder also comes with a command line option:
```
$ ./node_modules/.bin/util-package-finder
```
### Command line arguments
```
$ util-package-finder --help
Usage
util-package-finder [options]
Options
--json, -j Return results as JSON
--scope, -s Set the scope (default: springernature)
--all, -a Get all available versions
--filters, -f Comma seperated list of name filters
Examples
util-package-finder
util-package-finder -j
util-package-finder -s springernature
util-package-finder -a
util-package-finder -f global,local
util-package-finder -j -a -f global,local
```
## License
[MIT License][info-license] © 2018, Springer Nature
[info-npm]: https://www.npmjs.com/package/@springernature/util-package-finder
[badge-npm]: https://img.shields.io/npm/v/@springernature/util-package-finder.svg
[info-license]: https://github.com/springernature/frontend-toolkit-utilities/blob/master/LICENCE
[badge-license]: https://img.shields.io/badge/license-MIT-blue.svg
[badge-node]: https://img.shields.io/badge/node->=8-brightgreen.svg
[info-node]: package.json