Ghost 1.0.0 currently supports Node versions 6.9+ and 4.5+ only.
The recommended version of Node to use with Ghost is currently Node v6 LTS.
>=4.5 <5.* (Node v4 argon LTS)
Will be supported when Node.js declare it LTS
We don't normally change engines or recommendations based on Node.js security announcements. But Node.js updated all versions in July 2017 because of a high severity vulnerability. So you might want to bump your version.
- Recommended: this is the version of Node that we use with Ghost in production on Ghost(Pro) - meaning it is the most heavily tested and issues are actively fixed by the core team.
- Supported: these versions of Node are known to work with Ghost. There is a Travis build for these versions meaning they are checked against our test suite and we will always try to resolve any issues promptly.
- Unsupported: there is no build, no testing and no guarantee that Ghost will install or run. We will not prioritise fixing issues with these versions, but any patches for future versions are very welcome.
If you attempt to install Ghost with an unsupported version of Node.js, you may encounter the error ERROR: Unsupported version of Node and/or Exit status 231. To resolve this, you must install a compatible version of Node.js.
As Ghost will be following & supporting Node's LTS versions, this means that Ghost will not be officially supporting the Node 5.x line. The most recent LTS version is v6 and was released in October 2016, building on the work done to support Node 4.2+ LTS, we intend to track and add support for the new LTS soon after it is released.
Following Node's LTS timelines means that support for 0.10.x was dropped completely on 1st November 2016, support for 0.12.x was dropped on 31st December 2016 and support for the v6 LTS was added.
Following LTS means two things: 1) no support for the latest node version, e.g. v5.0 and 2) not being able to use the latest and greatest ES2016 features - so why are we doing it?
Node has picked up the pace on their development and so have npm. Between these two things, the surface area for issues whilst installing or upgrading Ghost has grown significantly. All the time spent supporting people trying to upgrade/install on various platforms detracts from the time we have available to build new features.
Equally, spending time tracking changes in node, and testing out each change doesn't impact us or our extensive dependency tree is all time we can't spend on building new features. Further still, dropping support for older node versions and using ES2016, or even adding babel, would significantly increase the amount of support we'd need to do to help our self-install users get and keep Ghost running. We try to encourage the community to support each other, but more often than not it falls to us to ensure our users have a good experience.
Ghost is a tiny project in terms of the number of people actively working on it. We have ambitious plans for what we're trying to do and we need to focus on delivering a useful product. By following LTS we can focus our efforts on meaningful work and keep our time spent on node versioning to a minimum. It also allows us to delay the support impact until later and give us a chance to grow our team to cope with the support in the meantime.
If you want to run Ghost on the latest version of node you can, however we are unable to offer support for any issues.