-
-
Notifications
You must be signed in to change notification settings - Fork 530
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Prerequisites: Use system version of Node #1201
Merged
stevepolitodesign
merged 1 commit into
suspenders-3-0-0
from
suspenders-3-0-0-node-version
May 7, 2024
Merged
Prerequisites: Use system version of Node #1201
stevepolitodesign
merged 1 commit into
suspenders-3-0-0
from
suspenders-3-0-0-node-version
May 7, 2024
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. [borrow]: https://github.com/rails/rails/blob/d65fec4fd2a047533408cbbd4824b248adc0e3fd/railties/lib/rails/generators/app_base.rb#L521-L529 [climate_control]: https://github.com/thoughtbot/climate_control
stevepolitodesign
force-pushed
the
suspenders-3-0-0-node-version
branch
from
May 7, 2024 09:46
dd27fec
to
db14f14
Compare
Comment on lines
+22
to
+24
def node_version | ||
ENV["NODE_VERSION"] || `node --version`[/\d+\.\d+\.\d+/] | ||
end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
mike-burns
reviewed
May 7, 2024
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good fix.
stevepolitodesign
added a commit
that referenced
this pull request
May 8, 2024
Follow-up to #1201 It's not enough to ensure Node is installed. We also need to ensure the consumer has the supported minimum version installed. Otherwise, subsequent generators will raise errors like so: ``` error [email protected]: The engine "node" is incompatible with this module. Expected version ">=18.12.0". Got "18.0.0" error Found incompatible module. ``` We select `v20.0.0` as our minimum supported version because it is slated for Active LTS, but is not bleeding edge at [this time][] [this time]: https://nodejs.org/en/about/previous-releases
stevepolitodesign
added a commit
that referenced
this pull request
May 8, 2024
Follow-up to #1201 It's not enough to ensure Node is installed. We also need to ensure the consumer has the supported minimum version installed. Otherwise, subsequent generators will raise errors like so: ``` error [email protected]: The engine "node" is incompatible with this module. Expected version ">=18.12.0". Got "18.0.0" error Found incompatible module. ``` We select `v20.0.0` as our minimum supported version because it is slated for Active LTS, but is not bleeding edge at [this time][] We also raise when calling the template to avoid unnecessarily generating a new Rails application. [this time]: https://nodejs.org/en/about/previous-releases
stevepolitodesign
added a commit
that referenced
this pull request
May 8, 2024
Follow-up to #1201 It's not enough to ensure Node is installed. We also need to ensure the consumer has the supported minimum version installed. Otherwise, subsequent generators will raise errors like so: ``` error [email protected]: The engine "node" is incompatible with this module. Expected version ">=18.12.0". Got "18.0.0" error Found incompatible module. ``` We select `v20.0.0` as our minimum supported version because it is slated for Active LTS, but is not bleeding edge at [this time][] We also raise when calling the template to avoid unnecessarily generating a new Rails application. [this time]: https://nodejs.org/en/about/previous-releases
stevepolitodesign
added a commit
that referenced
this pull request
May 8, 2024
Follow-up to #1201 It's not enough to ensure Node is installed. We also need to ensure the consumer has the supported minimum version installed. Otherwise, subsequent generators will raise errors like so: ``` error [email protected]: The engine "node" is incompatible with this module. Expected version ">=18.12.0". Got "18.0.0" error Found incompatible module. ``` We select `v20.0.0` as our minimum supported version because it is slated for Active LTS, but is not bleeding edge at [this time][] We also raise when calling the template to avoid unnecessarily generating a new Rails application. [this time]: https://nodejs.org/en/about/previous-releases
stevepolitodesign
added a commit
that referenced
this pull request
May 10, 2024
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 were 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. [borrow]: https://github.com/rails/rails/blob/d65fec4fd2a047533408cbbd4824b248adc0e3fd/railties/lib/rails/generators/app_base.rb#L521-L529 [climate_control]: https://github.com/thoughtbot/climate_control
stevepolitodesign
added a commit
that referenced
this pull request
May 10, 2024
Follow-up to #1201 It's not enough to ensure Node is installed. We also need to ensure the consumer has the supported minimum version installed. Otherwise, subsequent generators will raise errors like so: ``` error [email protected]: The engine "node" is incompatible with this module. Expected version ">=18.12.0". Got "18.0.0" error Found incompatible module. ``` We select `v20.0.0` as our minimum supported version because it is slated for Active LTS, but is not bleeding edge at [this time][] We also raise when calling the template to avoid unnecessarily generating a new Rails application. [this time]: https://nodejs.org/en/about/previous-releases
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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: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 vianode --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.