diff --git a/doc/api/process.md b/doc/api/process.md index dc311872fa..cda3bb9543 100644 --- a/doc/api/process.md +++ b/doc/api/process.md @@ -1271,6 +1271,12 @@ tarball. * `name` {String} A value that will always be `'node'` for Node.js. For legacy io.js releases, this will be `'io.js'`. +* `lts`: a string with a value indicating the _codename_ of the LTS (Long-term + Support) line the current release is part of. This property only exists for + LTS releases and is `undefined` for all other release types, including stable + releases. Current 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. * `sourceUrl` {String} an absolute URL pointing to a `_.tar.gz_` file containing the source code of the current release. * `headersUrl`{String} an absolute URL pointing to a `_.tar.gz_` file containing diff --git a/src/node.cc b/src/node.cc index 3276ee3bad..bb3a1982d0 100644 --- a/src/node.cc +++ b/src/node.cc @@ -3167,6 +3167,11 @@ void SetupProcessObject(Environment* env, READONLY_PROPERTY(process, "release", release); READONLY_PROPERTY(release, "name", OneByteString(env->isolate(), "node")); +#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 0000000000..5d5228af72 --- /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); +}