@rowanmanning/node-versions
v2.0.9
Published
Get the Node.js versions that a repo says it supports
Downloads
207
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 18+
Usage
Install with npm:
npm install @rowanmanning/node-versions
Load 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
: Aboolean
option defaulting tofalse
. If this is set totrue
then the returned versions will have any minor/patch versions removed. E.g.20.0.0
becomes20
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
: Aboolean
option defaulting tofalse
. If this is set totrue
then the returned versions will have any minor/patch versions removed. E.g.20.0.0
becomes20
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