@rowanmanning/node-versions
v3.1.16
Published
Get the Node.js versions that a repo says it supports
Readme
@rowanmanning/node-versions
Get the Node.js versions that a repo says it supports.
Requirements
This library requires the following to run:
- Node.js 20+
Usage
Install with npm:
npm install @rowanmanning/node-versionsLoad one of the methods into your code with import or require:
import { nodeVersions } from '@rowanmanning/node-versions';
// or
const { nodeVersions } = require('@rowanmanning/node-versions');The following exports are available.
nodeVersions
An array of strings (string[]) that contains every released versions of Node.js, retrieved from https://nodejs.org/dist/index.json. The versions are loaded on install rather than at runtime and there's a cached copy in the package that we keep up to date.
getPackageNodeVersions()
A function to list the Node.js versions that a package.json file claims to support. This function has the following signature:
(packageJson: PackageJson, options?: object) => string[]PackageJson must be a JavaScript object that is a valid package.json or package-lock.json file. We recommend using @rowanmanning/package-json or @npmcli/package-json.
The options argument is optional and can be used to change the way the method works. The following options are available:
majorsOnly: Abooleanoption defaulting tofalse. If this is set totruethen the returned versions will have any minor/patch versions removed. E.g.20.0.0becomes20
const versions = getPackageNodeVersions(require('./package.json'));
// ["v22.5.1", "v20.16.0", "v18.20.4", ...]
const versions = await getPackageNodeVersions(require('./package.json'), { majorsOnly: true });
// ["22", "20", "18", ...]getEnginesNodeVersions()
A function to list the supported Node.js versions based on a version range string. This might be useful if, for example, you already have the engines your package supports as a string. This function has the following signature:
(engines: string, options?: object) => string[]The engines argument is required and must be a semver range.
The options argument is optional and can be used to change the way the method works. The following options are available:
majorsOnly: Abooleanoption defaulting tofalse. If this is set totruethen the returned versions will have any minor/patch versions removed. E.g.20.0.0becomes20
const versions = getEnginesNodeVersions('18.x || 20.x || 22.x');
// ["v22.5.1", "v20.16.0", "v18.20.4", ...]
const versions = getEnginesNodeVersions('18.x || 20.x || 22.x', { majorsOnly: true });
// ["22", "20", "18", ...]Contributing
See the central README for a contribution guide and code of conduct.
License
Licensed under the MIT license. Copyright © 2024, Rowan Manning
