**Refactor and clarify the documentation in `README.md`** - Add Highlights - Add a Table of contents - Clarify the way semantic-release works - Clarify relationship with the CI environments - Describe local install for Node projects (with a `package.json`) and global install for non-JavaScript projects - Explain CI general configuration (environment variables and a run after all jobs are successful) - Clarify configuration (via config file or CLI arguments) - Clarify plugin roles and configuration - Add doc for shareable configuration - Add recipes - Add resources (Videos, articles, tutorials) - Add a Support section - Add a Team section **Add the following FAQs** - How can I use a npm build script that requires the `package.json`’s version ? - Can I use Semantic-release with Yarn? - Can I use Semantic-release to publish non-JavaScript packages? - Can I use Semantic-release with any CI service? - Can I use Semantic-release with any GitLab? - Can I use Semantic-release with any Git hosted environment? - Can I skip the release to the npm registry? - Can I use .npmrc options? - How can I set the access level of the published npm package? - Can I use Semantic-release to publish a package on Artifactory? - Can I set the initial release version of my package to 0.0.1? - Why does semantic-release require Node version >= 8? **Clarify Nove 8 requirement and solutions** - Add Node version requirement explanation and solutions - [X] Display a link to the documentation when running on Node < 8 version **Add recipes** - Travis - GitLab CI - Travis with build stages - To be done in #573 - CircleCI workflows - To be done in #573
53 lines
2.3 KiB
Markdown
53 lines
2.3 KiB
Markdown
# Node version requirement
|
|
|
|
semantic-release is written using the latest [ECMAScript 2017](https://www.ecma-international.org/publications/standards/Ecma-262.htm) features, without transpilation which requires **requires Node version 8 or higher**.
|
|
|
|
semantic-release is meant to be used in a CI environment as a development support tool, not as a production dependency. Therefore the only constraint is to run the `semantic-release` in a CI environment providing Node 8 or higher.
|
|
|
|
See our [Node Support Policy](../README.md#node-support-policy) for our long-term promise regarding Node version support.
|
|
|
|
## Recommended solution
|
|
|
|
### Run at least one CI job with Node >= 8
|
|
|
|
The recommended approach is to run the `semantic-release` command from a CI job running on Node 8 or higher. This can either be a job used by your project to test on Node 8 or a dedicated job for the release steps.
|
|
|
|
See [CI configuration](../README.md#ci-configuration) and [CI configuration recipes](recipes/README.md#ci-configurations) for more details.
|
|
|
|
## Alternative solutions
|
|
|
|
### Use `npx`
|
|
|
|
[`npx`](https://github.com/zkat/npx) is a CLI to execute npm binaries. It is bundled with [npm](https://www.npmjs.com/package/npm) >= 5.4, or can be installed via `npm install -g npx`.
|
|
|
|
`npx` can be used to download the [Node 8 package published on npm](https://www.npmjs.com/package/node) and use it to execute the `semantic-release` command.
|
|
|
|
If you are using a [local](../README.md#local-installation) semantic-release installation:
|
|
|
|
```bash
|
|
$ npm install -g npx && npx -p node@8 -c "npm run semantic-release"
|
|
```
|
|
|
|
If you are using a [global](../README.md#global-installation) semantic-release installation:
|
|
|
|
```bash
|
|
# For global semantic-release install
|
|
$ npm install -g semantic-release npx && npx -p node@8 -c "semantic-release"
|
|
```
|
|
|
|
### Use `nvm`
|
|
|
|
If your CI environment provides [nvm](https://github.com/creationix/nvm) you can use it to switch to Node 8 before running the `semantic-release` command.
|
|
|
|
If you are using a [local](../README.md#local-installation) semantic-release installation:
|
|
|
|
```bash
|
|
$ nvm install 8 && npm run semantic-release
|
|
```
|
|
|
|
If you are using a [global](../README.md#global-installation) semantic-release installation:
|
|
|
|
```bash
|
|
$ nvm install 8 && npm install -g semantic-release && semantic-release
|
|
```
|