0
0
mirror of https://github.com/tj/n.git synced 2024-11-22 02:57:32 +01:00
Node version management
Go to file
2019-06-03 20:40:36 +12:00
.github Rework and add github templates 2019-06-02 20:55:21 +12:00
bin Preparing for (pre)release 2019-06-03 20:31:12 +12:00
test Add test folder and tests 2019-05-04 19:45:53 +12:00
.editorconfig Add editor configuration files and README lint and tweaks 2019-04-07 17:23:31 +12:00
.gitignore Add test folder and tests 2019-05-04 19:45:53 +12:00
.markdownlint.json Add editor configuration files and README lint and tweaks 2019-04-07 17:23:31 +12:00
CHANGELOG.md Preparing for (pre)release 2019-06-03 20:31:12 +12:00
LICENSE Create LICENSE 2018-08-08 10:51:22 -04:00
Makefile Remove leading line break in Makefile. 2015-12-27 22:07:21 -06:00
package-lock.json 5.0.0-next.0 2019-06-03 20:40:36 +12:00
package.json 5.0.0-next.0 2019-06-03 20:40:36 +12:00
README.md Add environment variables section 2019-06-02 20:15:50 +12:00

n Interactively Manage Your Node.js Versions

npm npm npm npm

Node.js version management: no subshells, no profile setup, no convoluted API, just simple.

usage animation

(Note: n is not supported natively on Windows.)

Installation

Since you probably already have node, the easiest way to install n is through npm:

npm install -g n

Alternatively, you can clone this repo and

make install

to install n to bin/n of the directory specified in the environment variable $PREFIX, which defaults to /usr/local (note that you will likely need to use sudo). To install n in a custom location (such as $CUSTOM_LOCATION/bin/n), run PREFIX=$CUSTOM_LOCATION make install.

Once installed, n caches node versions in subdirectory n/versions of the directory specified in environment variable N_PREFIX, which defaults to /usr/local; and the active node version is installed directly in N_PREFIX.

To avoid requiring sudo for n and npm global installs, it is recommended you either install to your home directory using N_PREFIX, or take ownership of the system directories:

# make cache folder (if missing) and take ownership
sudo mkdir -p /usr/local/n
sudo chown -R $(whoami) /usr/local/n
# take ownership of node install destination folders
sudo chown -R $(whoami) /usr/local/bin /usr/local/lib /usr/local/include /usr/local/share

Third Party Installers

On macOS with Homebrew you can install the n formula.

brew install n

On Linux and macOS, n-install allows installation directly from GitHub; for instance:

curl -L https://git.io/n-install | bash

n-install sets both PREFIX and N_PREFIX to $HOME/n, installs n to $HOME/n/bin, modifies the initialization files of supported shells to export N_PREFIX and add $HOME/n/bin to the PATH, and installs the latest LTS node version.

As a result, both n itself and all node versions it manages are hosted inside a single, optionally configurable directory, which you can later remove with the included n-uninstall script. n-update updates n itself to the latest version. See the n-install repo for more details.

Installing/Activating Node Versions

Simply execute n <version> to install a version of node. If <version> has already been installed (via n), n will activate that version. A leading v is optional, and a partial version number installs the newest matching version.

n 4.9.1
n 10
n v8.11.3

Execute n on its own to view your currently installed versions. Use the up and down arrow keys to navigate and press enter to select. Use q or ^C (control + C) to exit the selection screen. If you like vim key bindings during the selection of node versions, you can use j and k to navigate up or down without using arrows.

$ n

  node/4.9.1
ο node/8.11.3
  node/10.15.0

Use or install the latest official release:

n latest

Use or install the latest LTS official release:

n lts

Removing Versions

Remove some cached versions:

n rm 0.9.4 v0.10.0

Removing all cached versions except the current version:

n prune

Remove the installed node and npm (does not affect the cached version). This can be useful to revert to the system version of node (if in a different location), or if you no longer wish to use node and npm, or are switching to a different way of managing them.

n uninstall

Binary Usage

When running multiple versions of node, we can target them directly by asking n for the binary path:

$ n bin 0.9.4
/usr/local/n/versions/0.9.4/bin/node

Or by using a specific version through n's use sub-command:

n use 0.9.4 some.js

Flags also work here:

n as 0.9.4 --debug some.js

Help

Output can also be obtained from n --help.

Usage: n [options/env] [COMMAND] [args]

Environments:
 n [COMMAND] [args]            Uses default env (node)

Commands:

  n                              Output versions installed
  n latest                       Install or activate the latest node release
  n -a x86 latest                As above but force 32 bit architecture
  n lts                          Install or activate the latest LTS node release
  n <version>                    Install node <version>
  n use <version> [args ...]     Execute node <version> with [args ...]
  n bin <version>                Output bin path for <version>
  n rm <version ...>             Remove the given version(s)
  n prune                        Remove all versions except the active version
  n --latest                     Output the latest node version available
  n --lts                        Output the latest LTS node version available
  n ls                           Output the versions of node available

Options:

  -V, --version   Output version of n
  -h, --help      Display help information
  -q, --quiet     Disable curl output (if available)
  -d, --download  Download only
  -a, --arch      Override system architecture

Aliases:

  which   bin
  use     as
  list    ls
  -       rm
  stable  lts

Custom Source

If you would like to use a different node mirror which has the same layout as the default https://nodejs.org/dist/, you can define NODE_MIRROR. The most common example is users in China can define:

export NODE_MIRROR=https://npm.taobao.org/mirrors/node

Custom Architecture

By default n picks the binaries matching your system architecture, e.g. n will download 64 bit binaries for a 64 bit system. You can override this by using the -a or --arch option.

Download and use latest 32 bit version of node:

n --arch x86 latest

Download and use 64 bit LTS version of node for older Mac Intel Core 2 Duo systems (x86 image is no longer available but x64 runs fine):

n --arch x64 lts

Optional Environment Variables

The n command downloads and installs to /usr/local by default, but you may override this location by defining N_PREFIX. To change the location to say $HOME/.n, add lines like the following to your shell initialization file:

export N_PREFIX=$HOME/.n
export PATH=$N_PREFIX/bin:$PATH

In brief: