javascriptnode.jshomebrewnvm

How to brew install specific version of Node?


For example I want to install either 7.9 or 7.10 but want to avoid Node 8 due to the webpack node-sass breaking bug.

When I run brew search node this is what I see:

❯ brew search node leafnode llnode node ✔ node-build > node@0.10 node@0.12 node@4 node@6 nodebrew nodeenv nodenv caskroom/cask/node-profiler

If you meant "node" specifically: It was migrated from caskroom/cask to homebrew/core. You can access it again by running: brew tap homebrew/core

There is node which is checked (my current version is v7.4.0 then node@0.10, node@0.12, node@4 and node@6?

The reason I can't just fully upgrade to 8 is node-sass won't work in webpack.


Just installed NVM and got this crazy error log:

=> nvm source string already in /Users/leongaban/.zshrc => Appending bash_completion source string to /Users/leongaban/.zshrc npm ERR! missing: is-path-cwd@^1.0.0, required by del@3.0.0 npm ERR! missing: is-path-in-cwd@^1.0.0, required by del@3.0.0 npm ERR! missing: p-map@^1.1.1, required by del@3.0.0 npm ERR! missing: pify@^3.0.0, required by del@3.0.0 npm ERR! missing: rimraf@^2.2.8, required by del@3.0.0 npm ERR! missing: bluebird@^3.1.1, required by gulp-html-replace@1.6.2 npm ERR! missing: clone@^1.0.2, required by gulp-html-replace@1.6.2

...

=> You currently have modules installed globally with `npm`. These will no
=> longer be linked to the active version of Node when you install a new node
=> with `nvm`; and they may (depending on how you construct your `$PATH`)
=> override the binaries of modules installed with `nvm`:

If I'm reading this right, does this mean I can't use npm to globally install packages anymore and have to use nvm?

Update

I added the export lines to my .zshrc bash (I don't use bash_profile)

❯ nvm --version
0.33.2

Solution

  • There are two ways in the decision for using different version of Node. Second way is more convenient and practical by my opinion (also may be faster).


    First way:

    Install other Node version(for example 14) with using:

    brew install node@14
    brew unlink node
    brew link node@14
    node -v
    

    PS You may use brew link with flag --overwrite, for example:

    brew link --overwrite node@14
    

    PS2 Why unlink and then link again?

    Documentation:

    Remove symlinks for formula from Homebrew's prefix. This can be useful for temporarily disabling a formula:

    brew unlink formula && commands && brew link formula

    In other words:

    if you have both node and node@14 installed, where node is other version(..,15 or 16), so, for set active version 14:

    you must unlink node and then link to new installed version 14
    brew unlink node brew link node@14

    PS3

    Brew typically supports only major versions of software packages, meaning it provides updates like node@18 rather than specific minor versions such as node@18.12.1.

    This approach simplifies package management by focusing on core stable releases without maintaining every minor version.

    For more precise version control, tools like nvm(Second way) are recommended, allowing to install specific minor or patch versions as needed.


    Second way:

    Install Node Version Manager(nvm) and select Node version:

    nvm - github nvm - home brew

    brew install nvm
    
    mkdir ~/.nvm
    
    export NVM_DIR="$HOME/.nvm"
        [ -s "$(brew --prefix)/opt/nvm/nvm.sh" ] && . "$(brew --prefix)/opt/nvm/nvm.sh" # This loads nvm
        [ -s "$(brew --prefix)/opt/nvm/etc/bash_completion.d/nvm" ] && . "$(brew --prefix)/opt/nvm/etc/bash_completion.d/nvm" # This loads nvm bash_completion
    
    nvm install 14
    
    nvm use 14
    
    nvm list