Documenting your Rails project's Node.js version in .nvmrc

Not all versions of Node.js are compatible with each other. Also npm packages may require a minimum or maximum version of Node.js. We use nvm on our development PCs so we can operate multiple versions of Node.js in parallel.

To make sure that all developers use a compatible version of Node.js, your Rails project should declare the required Node.js in a file called .nvmrc.

When a .nvmrc exists, developers can cd in your project directory and activate the project's node version with

nvm use

There are some hacks Show archive.org snapshot to automatically activate a Node version as you cd into a directory, but I didn't test them. Note that these hacks might clash with rbenv which also aliases your cd to activate the correct Ruby version from .ruby-version.

Picking the right Node version

We prefer using one of Node's LTS release lines Show archive.org snapshot , as they get minor updates over some year.

For example, if we want to use Node 20 LTS, we would look up its latest release and fill in:

v20.11.1

Warning

Don't use a version without v prefix. This is currently not supported by capistrano-opscomplete.

Warning

Don't use a nondeterministic version like lts/gallium. This is not supported by all tools. In particular asdf Show archive.org snapshot is sunsetting its support for LTS aliases.

Testing compatibility

In general, a recent Rails projects should use the currently active LTS version of LTS.

If you are unsure about compatibility, these two commands should work:

yarn
rake assets:precompile
Henning Koch Almost 5 years ago