Skip to content

msimerson/node-lts-versions

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

CI Conventional Commits

Node.js LTS versions

Retrieve a list of Long Term Stable versions of Node.js.

The output of the yaml function is designed to populate a GitHub Actions matrix declaration so that your CI is always testing with every Active LTS version of Node.js.

Usage

This action has three outputs:

  • active is currently active node.js versions
  • lts is a subset of active versions.
  • min is the lowest LTS version

At the time of writing, active=[18,20] and lts=[18,20].

manually (the normal way)

  test:
    strategy:
      matrix:
        os: [ ubuntu-latest, windows-latest, macos-latest ]
        node-version: [ 18, 20 ]
      fail-fast: false
    steps:

automatically

  test:
    needs: get-lts
    strategy:
      matrix:
        os: [ ubuntu-latest, windows-latest, macos-latest ]
        node-version: ${{ fromJson(needs.get-lts.outputs.lts) }}
      fail-fast: false
    steps:
  get-lts:
    runs-on: ubuntu-latest
    steps:
      - id: get
        uses: msimerson/node-lts-versions@v1
    outputs:
      active: ${{ steps.get.outputs.active }}
      lts: ${{ steps.get.outputs.lts }}
      min: ${{ steps.get.outputs.min }}

Example

✗ node main.js
::setOutput name=active::["18", "20"]
::setOutput name=lts::["18", "20"]
::setOutput name=min::"18"

RAW

const ltsv = require('node-lts-versions')
ltsv.fetchLTS().then(() => {
    console.log(ltsv.json())
    console.log(ltsv.yaml())
    ltsv.print()
})

Methods

fetchLTS

Retrieves Node.js version information. Prints active LTS versions in several formats.

json

["18", "20"]

yaml

[ '18', '20' ]

print

Ver Codename  Latest Release    LTS Period
18  Hydrogen  v18.19.0  2023-11-29  2022-04-18 to 2024-10-17
20  Iron  v20.11.0  2024-01-09  2023-04-17 to 2025-10-16

Reference

Future

Got ideas? Contributions are welcome. Submit a PR with tests and it will likely be accepted.