Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Install Node.js to install n to install Node.js?

Tags:

node.js

npm

n

I have a problem understanding the use of n. Basically, it is clear that it is a version manager for Node.js such as nvm.

But in contrast to nvm, which is basically a shell script, according to the documentation you are encouraged to use npm to install n:

$ npm install -g n 

What I don't get is: For having npm at hand you need to install Node.js. Why would I install Node.js manually to use npm to then be able to install Node.js using n?

To put my question in other words: Why does n suggest installing using npm, if its main purpose is to install Node.js, which includes npm?

like image 624
Golo Roden Avatar asked Oct 18 '13 14:10

Golo Roden


People also ask

Do I need to install Node.js to install npm?

To publish and install packages to and from the public npm registry or a private npm registry, you must install Node. js and the npm command line interface using either a Node version manager or a Node installer. We strongly recommend using a Node version manager like nvm to install Node. js and npm.

Do I need NVM to install Node?

Node Version Manager, more commonly called nvm, is the most popular way to install multiple versions of Node. js, but is only available for Mac/Linux and not supported on Windows. Instead, we recommend installing nvm-windows and then using it to install Node.


2 Answers

tl; dr

# Installs n and the latest LTS Node.js version to ~/n. # For bash, ksh, zsh, modifies the respective user-specific shell-initialization file to # define env. variable N_PREFIX and append $N_PREFIX/bin to the $PATH. curl -L https://git.io/n-install | bash   

I feel your pain. Installing Node.js to then install n to then manage Node.js installations is indeed a strange setup.

It would indeed be great to be able to install n by itself first.

I've created a project to support installation of n directly from GitHub; the only prerequisite beyond what n itself needs is git.

Note that you must first remove any pre-existing n / Node.js versions.
The target directory, ~/n by default, must either not yet exist or be empty.
For bash, ksh, and zsh, the relevant shell initialization file (e.g., ~/.bashrc) is automatically modified to define environment variable N_PREFIX and append $N_PREFIX/bin to the $PATH; for other shells, this must be done manually.

Aside from installing n directly from GitHub, it also installs helper scripts for updating n (n-update) and uninstalling it (n-uninstall).

Here are working examples; see the n-install GitHub repo for details:

  • Installation with confirmation prompt to confirm installing to default location $HOME/n and installing the latest LTS Node.js version:

    curl -L https://git.io/n-install | bash 
  • Automated installation to the default location, with subsequent installation of the latest LTS (long-term support) and latest-overall Node.js versions, as well as the latest 4.1.x Node.js version:

    curl -L https://git.io/n-install | bash -s -- -y lts latest 4.1 
  • Automated installation to the default location, without subsequent installation of a Node.js version:

    curl -L https://git.io/n-install | bash -s -- -y - 
  • Automated installation to custom location ~/util/n, with subsequent installation of the latest LTS Node.js version:

    curl -L https://git.io/n-install | N_PREFIX=~/util/n bash -s -- -y 
like image 129
mklement0 Avatar answered Sep 21 '22 15:09

mklement0


If you prefer, you can install n from source:

cd /tmp git clone --depth=1 https://github.com/tj/n cd n sudo make install 

Then you can install the latest stable version of node as follows:

n stable 
like image 45
user456584 Avatar answered Sep 21 '22 15:09

user456584