2016-03-28 16:56:29 -04:00
# Easy Install node.js
2017-11-03 14:51:47 -06:00
2018-05-12 13:45:15 -06:00
| Sponsored by [ppl ](https://ppl.family ) |
2014-12-21 17:10:33 -07:00
2018-09-10 07:40:50 +00:00
Automated node.js installers for macOS and Linux
2014-12-21 17:36:52 -07:00
2018-09-10 07:40:50 +00:00
## QuickStart
**node.js only**
2015-01-20 22:34:04 -07:00
2016-03-28 16:56:29 -04:00
```bash
2018-09-10 07:40:50 +00:00
curl -fsSL https://bit.ly/node-installer | bash
```
*Note*: [bit.ly/node-installer ](https://bit.ly/node-installer ) simple redirects to < https: // git . coolaj86 . com / coolaj86 / node-installer . sh / raw / master / install . sh >
## Screencast
[How to Setup a VPS for node.js Development ](https://www.youtube.com/watch?v=ypjzi1axH2A ) - [(3:06 installing node.js ](https://www.youtube.com/watch?v=ypjzi1axH2A#t=186 ))
## Options
* [x] version
* [x] install location
* [x] tools for building native modules
**Version Examples**
By default the latest version will be installed.
A specific version can be defined:
```bash
NODE_VERSION=v10 # Latest of v10
NODE_VERSION=v10.1 # Latest of v10.1
NODE_VERSION=v10.10 # Latest of v10.10
NODE_VERSION=v10.10.0 # Exactly v10.10.0
```
2015-01-20 19:34:25 -07:00
2016-03-28 16:56:29 -04:00
```
2018-09-10 07:40:50 +00:00
export NODE_VERSION=v10
curl -fsSL https://bit.ly/node-installer | bash
```
**Custom Install Location**
By default node will be installed to `/usr/local` , without root if possible.
2014-12-21 17:36:52 -07:00
2018-09-10 07:40:50 +00:00
A custom location can be defined:
```
export NPM_CONFIG_PREFIX=$HOME/.local/
export NODE_PATH=$HOME/.local/
curl -fsSL https://bit.ly/node-installer | bash
```
## Node + Dev Tools
* [x] curl & wget
* [x] rsync
* [x] gcc (via XCode or build-essential)
* [x] pkg-config
* [x] node.js
* [x] jshint
2015-01-20 23:33:28 -07:00
2016-03-28 17:05:29 -04:00
Install node.js and basic development tools - git, node, gcc, pkg-config, etc
2016-03-28 16:35:23 -04:00
2016-03-28 16:56:29 -04:00
```bash
2018-05-12 19:46:57 +00:00
curl -fsSL https://bit.ly/node-installer -o ./node-installer.sh; bash ./node-installer.sh --dev-deps
2017-11-03 14:51:47 -06:00
2015-01-19 17:09:36 -07:00
```
2018-09-10 07:40:50 +00:00
Or with `wget`
```bash
wget -nv https://bit.ly/node-installer -O - ./node-installer.sh; bash ./node-installer.sh --dev-deps
```
2016-03-28 16:56:29 -04:00
2017-11-03 21:16:35 +00:00
## Options
### Choosing a specific version
2015-01-20 19:34:25 -07:00
2018-05-24 21:34:44 +00:00
**Latest**
2016-03-28 17:06:16 -04:00
```bash
2018-05-24 21:34:44 +00:00
export NODEJS_VER=""
2018-05-24 21:31:04 +00:00
```
2018-05-24 21:34:44 +00:00
**Exact**
2018-05-24 21:31:04 +00:00
```bash
export NODEJS_VER="v10.2.1"
2018-05-24 21:34:44 +00:00
```
**Latest of vX.Y.Z**
2018-05-24 21:31:04 +00:00
2018-05-24 21:34:44 +00:00
```bash
2018-05-24 21:31:04 +00:00
export NODEJS_VER="v8.1"
2018-05-24 21:34:44 +00:00
```
2018-05-24 21:31:04 +00:00
2018-05-24 21:34:44 +00:00
**Latest of vX.YY.Z**
```bash
2018-05-24 21:31:04 +00:00
# latest of v8.11.x
export NODEJS_VER="v8.11"
2018-05-24 21:34:44 +00:00
```
**Latest of vX.Y**
2018-05-24 21:31:04 +00:00
2018-05-24 21:34:44 +00:00
```bash
2018-05-24 21:31:04 +00:00
export NODEJS_VER="v10"
2016-03-28 16:56:29 -04:00
```
2015-04-22 09:54:59 -06:00
2018-05-24 21:34:44 +00:00
Fun FYI, here's how the latest version is determined:
```bash
NODEJS_VER=$(curl -fsSL https://nodejs.org/dist/index.tab | tail -n +2 | cut -f 1 | head -1 )
echo "The current node.js version is $NODEJS_VER"
```
```bash
BASE_VER="v10\\."
NODEJS_VER=$(curl -fsSL https://nodejs.org/dist/index.tab | tail -n +2 | cut -f 1 | grep $BASE_VER | head -1 )
echo "Latest node.js $BASE_VER is $NODEJS_VER"
```
2017-11-03 21:16:35 +00:00
### Choosing an install location
2017-11-03 15:11:57 -06:00
Just set BOTH `NODE_PATH` and `NPM_CONFIG_PREFIX` .
The install path will be the preceding `lib/node_modules`
2018-06-05 07:36:21 +00:00
(which you usually want to be the same as `NPM_CONFIG_PREFIX` anyway).
2017-11-03 15:11:57 -06:00
```bash
2018-06-14 21:10:05 +00:00
export NPM_CONFIG_PREFIX=/tmp/usr/local
export NODE_PATH=/tmp/usr/local/lib/node_modules
2018-05-24 21:34:44 +00:00
```
2017-11-03 15:11:57 -06:00
2018-06-14 21:10:05 +00:00
A more realistic example for a self-contained node app:
```bash
export NPM_CONFIG_PREFIX=/opt/my-app
export NODE_PATH=/opt/my-app/lib/node_modules
```
2018-05-24 21:34:44 +00:00
```bash
2018-05-12 19:46:57 +00:00
curl -fsSL https://bit.ly/node-installer -o ./node-installer.sh; bash ./node-installer.sh --dev-deps
2018-05-24 21:34:44 +00:00
```
2017-11-03 15:11:57 -06:00
2018-05-24 21:34:44 +00:00
If you want to add the install location to your `PATH` :
```bash
2017-11-03 15:11:57 -06:00
PATH=$PATH:/tmp/user/local/bin
```
2016-03-28 16:56:29 -04:00
## Notes
2015-01-20 23:33:28 -07:00
2016-03-28 16:56:29 -04:00
* [OS X ](#apple-os-x )
* [Ubuntu Linux ](#ubuntu-linux )
* [Important Notes ](#other-things-you-should-know )
2014-12-21 17:36:52 -07:00
2016-03-28 16:56:29 -04:00
### Apple OS X
2015-01-20 19:34:25 -07:00
2015-01-20 22:45:27 -07:00
First you need to **Install XCode Command Line Tools**
2015-01-20 19:34:25 -07:00
2015-01-20 22:39:46 -07:00
```bash
2015-01-20 19:34:25 -07:00
xcode-select --install
```
2015-01-20 22:45:27 -07:00
Then you need to **Accept the XCode License** by running any command installed by Xcode with sudo. We'll use git.
2015-01-20 19:34:25 -07:00
2015-01-20 22:39:46 -07:00
```bash
sudo git --version
2015-01-20 19:34:25 -07:00
```
You can scroll to the bottom by hitting shift+G (capital G).
2015-01-15 15:59:32 -07:00
2015-01-20 19:34:25 -07:00
Type `agree` and hit enter to accept the license.
2015-01-15 15:59:32 -07:00
2015-12-09 12:40:29 -08:00
Now you can install node.js
2014-12-21 17:36:52 -07:00
2015-01-08 11:39:49 -07:00
```bash
2018-05-12 19:46:57 +00:00
curl -fsSL https://bit.ly/node-installer -o /tmp/node-installer.sh; bash /tmp/node-installer.sh --dev-deps
2014-12-21 17:36:52 -07:00
```
2015-01-20 19:34:25 -07:00
*TODO*: Make it easier to accepting the license (automatic?)
2016-03-28 16:56:29 -04:00
### Ubuntu Linux
2015-01-20 19:34:25 -07:00
2015-01-20 22:39:46 -07:00
```bash
2018-05-12 19:46:57 +00:00
wget -nv https://bit.ly/node-installer -O /tmp/node-installer.sh; bash /tmp/node-installer.sh --dev-deps
2015-01-20 19:34:25 -07:00
```
2016-03-28 16:56:29 -04:00
### Other things you should know
2015-01-20 19:34:25 -07:00
2018-05-24 21:31:04 +00:00
This is what gets installed with the dev dependencies:
2014-12-21 17:36:52 -07:00
* rsync
* curl
* wget
* git
2015-01-08 11:27:16 -07:00
* xcode / brew / build-essential / pkg-config / gcc
2015-12-09 12:40:29 -08:00
* node (including npm)
2014-12-21 17:36:52 -07:00
* jshint
2015-01-08 11:17:15 -07:00
2017-05-25 11:20:00 -06:00
**NOTE**: If you're running a node.js server on an edge server,
I'd highly recommend that you also install `fail2ban` to secure ssh -
especially if you haven't switched your server to use key-only authentication.