thoughtbot / suspenders

A Rails template with our standard defaults.
https://thoughtbot.com
MIT License
4.02k stars 529 forks source link

Prerequisites: Use system version of Node #1201

Closed stevepolitodesign closed 6 months ago

stevepolitodesign commented 6 months ago

We were incorrectly assuming consumers had the version of Node installed that is declared in Suspenders::NODE_LTS_VERSION.

Because of this, we were generating a .node-version file with a version that was not installed on the user's system. This was a problem because when subsequent generators depending on Node where invoked, they would raise the following:

No preset version installed for command node
Please install a version by running one of the following:

asdf install nodejs 20.11.1

To account for this, we borrow from Rails, but modify slightly. First, we look to see if ENV["NODE_VERSION"] is set. If not, we then look to see if Node is installed, and set the version via node --version. If neither of those values are present, we raise. This is because we can't use a fallback value, since the consumer does not have Node installed on their system.

Removes Suspenders::NODE_LTS_VERSION since it's no longer used as a fallback.

Introduced climate_control as a development dependency in order to test this feature.