diff --git a/doc/api/process.md b/doc/api/process.md index 959283b7970506..7a005503c9b2e2 100644 --- a/doc/api/process.md +++ b/doc/api/process.md @@ -1396,7 +1396,11 @@ tarball. compiling Node.js native add-ons. _This property is only present on Windows builds of Node.js and will be missing on all other platforms._ * `lts` {string} a string label identifying the [LTS][] label for this release. - If the Node.js release is not an LTS release, this will be `undefined`. + This property only exists for LTS releases and is `undefined` for all other + release types, including _Current_ releases. Currently the valid values are: + - `'Argon'` for the v4.x LTS line beginning with v4.2.0. + - `'Boron'` for the v6.x LTS line beginning with v6.9.0. + - `'Carbon'` for the v8.x LTS line beginning with v8.9.1. For example: diff --git a/src/node.cc b/src/node.cc index 7a7db9140f88a4..e6e3e02c98e5db 100644 --- a/src/node.cc +++ b/src/node.cc @@ -3458,6 +3458,11 @@ void SetupProcessObject(Environment* env, READONLY_PROPERTY(release, "name", OneByteString(env->isolate(), NODE_RELEASE)); +#if NODE_VERSION_IS_LTS + READONLY_PROPERTY(release, "lts", + OneByteString(env->isolate(), NODE_VERSION_LTS_CODENAME)); +#endif + // if this is a release build and no explicit base has been set // substitute the standard release download URL #ifndef NODE_RELEASE_URLBASE diff --git a/test/parallel/test-process-release.js b/test/parallel/test-process-release.js new file mode 100644 index 00000000000000..5d5228af72b599 --- /dev/null +++ b/test/parallel/test-process-release.js @@ -0,0 +1,16 @@ +'use strict'; +require('../common'); +const assert = require('assert'); +const versionParts = process.versions.node.split('.'); + +assert.equal(process.release.name, 'node'); + +// it's expected that future LTS release lines will have additional +// branches in here +if (versionParts[0] === '4' && versionParts[1] >= 2) { + assert.equal(process.release.lts, 'Argon'); +} else if (versionParts[0] === '6' && versionParts[1] >= 9) { + assert.equal(process.release.lts, 'Boron'); +} else { + assert.strictEqual(process.release.lts, undefined); +}