@syncify/update
Version:
Version comparison and increment information for packages on the NPM Registry
78 lines (59 loc) • 2.08 kB
Markdown
Checks for version updates of an NPM module and returns a detailed model describing the version increment and changes. Supports pre-release version identifiers and registry tags.
This module is available for consumption on NPM Registry and can be used in isolation.
```bash
$ pnpm add @syncify/update -D
```
This module will adhere to [Semantic Versioning](https://semver.org/) but also take into consideration pre-release identifiers. The ordering will respect the NPM publishing rules, for example:
1. `v1.0.0-alpha.1`
2. `v1.0.0-alpha.2`
3. `v1.0.0-beta.1`
4. `v1.0.0-beta.2`
5. `v1.0.0-rc.1`
6. `v1.0.0-rc.2`
7. `v1.0.0`
Number `1` is the oldest version, whereas number `7` is the newest version. In Syncify, NPM package versions and releases are structured in the above manner, but this is not strictly imposed for isolated usage.
There is a single default function export exposed which requires a package name and a version number to be provided. You can target specific tagged versions and extend the pre-release priorities. By default, the module will check the `latest` version in the registry and the above priorities.
<!--prettier-ignore-->
```ts
import update from '@syncify/update'
const version = await update('@syncify/cli', '1.0.0', {
tag: 'latest',
priorities: { alpha: 1, beta: 2, rc: 3 }
})
if (version !== false) {
console.log(version) // version increment information
}
```
When a newer version is available, the promise will resolve the following object.
```ts
interface VersionUpdate {
change: 'major' | 'minor' | 'patch';
bump: string;
step: boolean;
release: string;
breaking: boolean;
current: string;
registry: string;
parse: {
current: {
major: number;
minor: number;
patch: number;
release: string;
stage: number;
};
registry: {
major: number;
minor: number;
patch: number;
release: string;
stage: number;
};
};
}
```