refactor the docs

This commit is contained in:
AJ ONeal 2018-09-10 08:19:11 +00:00
parent 1387929dfc
commit 05199bcf82
1 changed files with 49 additions and 111 deletions

160
README.md
View File

@ -2,154 +2,93 @@
| Sponsored by [ppl](https://ppl.family) |
Automated node.js installers for macOS and Linux
Simple node.js installer for macOS and Linux
## QuickStart
**node.js only**
```bash
curl -fsSL https://bit.ly/node-installer | bash
curl -fsL 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>
*Note*: [bit.ly/node-installer](https://bit.ly/node-installer) is a redirect 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
## Installer Options
* [x] version
* [x] install location
* [x] tools for building native modules
**Version Examples**
### Choose Version
By default the latest version will be installed.
The latest version of node is installed by default.
A specific version can be defined:
You can choose a specific version by defining `NODE_VERSION` in the format `vX`, `vX.Y`, or `v.X.Y.Z`:
```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
NODE_VERSION=v10
```
Usage:
```
export NODE_VERSION=v10
export NODE_VERSION=v10.10
curl -fsSL https://bit.ly/node-installer | bash
```
**Custom Install Location**
### Location
By default node will be installed to `/usr/local`, without root if possible.
A custom location can be defined:
You can choose a specific location by setting **both** `NPM_CONFIG_PREFIX` **and** `NODE_PATH`:
```
export NPM_CONFIG_PREFIX=$HOME/.local/
export NODE_PATH=$HOME/.local/
export NODE_PATH=$NPM_CONFIG_PREFIX/lib/node_modules
curl -fsSL https://bit.ly/node-installer | bash
```
## Node + Dev Tools
If you want to add the install location to your `PATH`, add `/bin` to the custom location used above and append it like so:
```bash
PATH=$PATH:$HOME/.local/bin
```
### Development Tools
If you plan on building or creating native node modules, you'll want to install `gcc`, `pgk-config`, and a few other required tools and niceties.
In fact, it's fairly common for modules to have both native module and pure js dependencies, so you'll probably want (or need) to install these even if you don't plan to use them directly.
* [x] curl & wget
* [x] git
* [x] rsync
* [x] gcc (via XCode or build-essential)
* [x] xcode, brew (on macOS), build-essential (Linux)
* [x] gcc, pkg-config
* [x] pkg-config
* [x] node.js
* [x] jshint
* [x] node.js, jshint
Install node.js and basic development tools - git, node, gcc, pkg-config, etc
Pass `--dev-deps` to the installer script and it will use either `brew` (on macOS) or `apt` (on Linux) to install the development tools.
```bash
curl -fsSL https://bit.ly/node-installer -o ./node-installer.sh; bash ./node-installer.sh --dev-deps
curl -fsSL https://bit.ly/node-installer | bash -s -- --dev-deps
```
Or with `wget`
Or, if you don't have `curl` installed yet you can use `wget`:
```bash
wget -nv https://bit.ly/node-installer -O - ./node-installer.sh; bash ./node-installer.sh --dev-deps
wget -nv https://bit.ly/node-installer -O - | bash -s -- --dev-deps
```
## Options
### Securing your server
### Choosing a specific version
If you're running a node.js server on anything with a public ip address
(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 (which you should also do).
**Latest**
```bash
export NODEJS_VER=""
```
**Exact**
```bash
export NODEJS_VER="v10.2.1"
```
**Latest of vX.Y.Z**
```bash
export NODEJS_VER="v8.1"
```
**Latest of vX.YY.Z**
```bash
# latest of v8.11.x
export NODEJS_VER="v8.11"
```
**Latest of vX.Y**
```bash
export NODEJS_VER="v10"
```
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"
```
### Choosing an install location
Just set BOTH `NODE_PATH` and `NPM_CONFIG_PREFIX`.
The install path will be the preceding `lib/node_modules`
(which you usually want to be the same as `NPM_CONFIG_PREFIX` anyway).
```bash
export NPM_CONFIG_PREFIX=/tmp/usr/local
export NODE_PATH=/tmp/usr/local/lib/node_modules
```
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
```
```bash
curl -fsSL https://bit.ly/node-installer -o ./node-installer.sh; bash ./node-installer.sh --dev-deps
```
If you want to add the install location to your `PATH`:
```bash
PATH=$PATH:/tmp/user/local/bin
```
See [The 15-Minute Guide to Secure VPS Access (for the Semi-Paranoid)](https://www.youtube.com/watch?v=YZzhIIJmlE0)
## Notes
@ -189,18 +128,17 @@ curl -fsSL https://bit.ly/node-installer -o /tmp/node-installer.sh; bash /tmp/no
wget -nv https://bit.ly/node-installer -O /tmp/node-installer.sh; bash /tmp/node-installer.sh --dev-deps
```
### Other things you should know
### Automatic Version Detection
This is what gets installed with the dev dependencies:
Fun FYI, here's how the latest version is determined:
* rsync
* curl
* wget
* git
* xcode / brew / build-essential / pkg-config / gcc
* node (including npm)
* jshint
```bash
NODE_VERSION=$(curl -fsSL https://nodejs.org/dist/index.tab | tail -n +2 | cut -f 1 | head -1 )
echo "The current node.js version is $NODE_VERSION"
```
**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.
```bash
BASE_VER="v10\\."
NODE_VERSION=$(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 $NODE_VERSION"
```