Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Badisi/latest-version
📦 Get latest versions of packages
https://github.com/Badisi/latest-version
check current dependencies latest module next npm package package-json pkg updates version
Last synced: about 1 month ago
JSON representation
📦 Get latest versions of packages
- Host: GitHub
- URL: https://github.com/Badisi/latest-version
- Owner: Badisi
- License: mit
- Created: 2021-04-06T16:54:44.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-04-12T19:28:58.000Z (7 months ago)
- Last Synced: 2024-04-20T18:37:55.328Z (7 months ago)
- Topics: check, current, dependencies, latest, module, next, npm, package, package-json, pkg, updates, version
- Language: TypeScript
- Homepage:
- Size: 1.02 MB
- Stars: 5
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
@badisi/latest-version
📦 Get latest versions of packages.
## Features
✅ Get `installed` versions of packages *(if installed locally or globally with npm or yarn)*
✅ Get `latest` and `next` versions of packages *(from package registries)*
✅ Get `wanted` version of packages *(if a version range or a tag is provided)*
✅ Check if any `updates` are available
✅ Cache support to increase data retrieval performance
✅ Support public/private repositories and proxies
✅ [Command line tool](#command-line-tool) that helps visualize packages updates## Installation
```sh
npm install @badisi/latest-version --save
``````sh
yarn add @badisi/latest-version
```## Usage
__Example__
```ts
/** CommonJS */
// const { readFileSync } = require('fs');
// const latestVersion = require('@badisi/latest-version');/** ESM / Typescript */
import { readFileSync } from 'fs';
import latestVersion from '@badisi/latest-version';(async () => {
// Single package
const pkg = await latestVersion('npm');// List of packages
const pkgs = await latestVersion(['npm', '[email protected]', 'npm@beta', '@scope/name@^5.0.2']);// Package.json
const pkgs = await latestVersion(JSON.parse(readFileSync('package.json').toString()));// Using cache
const pkg = await latestVersion('npm@^5.0.2', { useCache: true });
})();
```__Return__
Either a collection or a single `LatestVersionPackage` object:
```ts
interface LatestVersionPackage {
/**
* The name of the package.
*/
name: string;
/**
* The current local installed version of the package (if installed).
*/
local?: string;
/**
* The current npm global installed version of the package (if installed).
*/
globalNpm?: string;
/**
* The current yarn global installed version of the package (if installed).
*/
globalYarn?: string;
/**
* The latest version of the package found on the registry (if found).
*/
latest?: string;
/**
* The next version of the package found on the registry (if found).
*/
next?: string;
/**
* The tag or version range that was provided (if provided).
*
* @default "latest"
*/
wantedTagOrRange?: string;
/**
* The latest version of the package found on the registry and satisfied by the wanted tag or version range.
*/
wanted?: string;
/**
* Whether the local or global installed versions (if any) could be upgraded or not, based on the wanted version.
*/
updatesAvailable: {
local: string | false;
globalNpm: string | false;
globalYarn: string | false;
} | false;
/**
* Any error that might have occurred during the process.
*/
error?: Error;
}
```__Options__
```ts
interface LatestVersionOptions {
/**
* Awaiting the api to return might take time, depending on the network, and might impact your package loading performance.
* You can use the cache mechanism to improve load performance and reduce unnecessary network requests.
* If `useCache` is not supplied, the api will always check for updates and wait for every requests to return before returning itself.
* If `useCache` is used, the api will either (for each provided packages):
* 1) return immediately if a cache was found.
* 2) fetch and wait for updates of that particular package then creates a cache for it so that it is available for the next call to the api.
*
* @default false
*/
useCache?: boolean;/**
* How long the cache for each provided packages should be used before being refreshed (in milliseconds).
* If `useCache` is not supplied, this option has no effect.
* If `0` is used, this will force the cache to refresh immediately:
* 1) New updates will be fetched and waited
* 2) The cache for each provided packages will be refreshed and made available for the next call to the api
*
* @default ONE_DAY
*/
cacheMaxAge?: number;/**
* A JavaScript package registry url that implements the CommonJS Package Registry specification.
*
* @default "Looks at any registry urls in the .npmrc file or fallback to the default npm registry instead"
* @example .npmrc
* registry = 'https://custom-registry.com/'
* @pkgscope:registry = 'https://custom-registry.com/'
*/
registryUrl?: string;/**
* Set of options to be passed down to Node.js http/https request.
*
* @example Behind a proxy with self-signed certificate
* { ca: fs.readFileSync('proxy-cert.pem') }
* @example Bypassing certificate validation
* { rejectUnauthorized: false }
*/
requestOptions?: RequestOptions;
}
```## Command line tool
The CLI utility will help you visualize any available updates for a given *package.json* file, a local *package.json* file or any provided package names.
```sh
$ latest-versionExamples:
$ lv
$ latest-version path/to/package.json
$ latest-version package1 package2 package3 --skip-missing
```![CLI utility preview][clipreview]
## Development
See the [developer docs][developer].
## Contributing
#### > Want to Help ?
Want to file a bug, contribute some code or improve documentation ? Excellent!
But please read up first on the guidelines for [contributing][contributing], and learn about submission process, coding rules and more.
#### > Code of Conduct
Please read and follow the [Code of Conduct][codeofconduct] and help me keep this project open and inclusive.
[clipreview]: https://github.com/badisi/latest-version/blob/main/cli_preview.png
[developer]: https://github.com/badisi/latest-version/blob/main/DEVELOPER.md
[contributing]: https://github.com/badisi/latest-version/blob/main/CONTRIBUTING.md
[codeofconduct]: https://github.com/badisi/latest-version/blob/main/CODE_OF_CONDUCT.md