refactor the docs
This commit is contained in:
parent
1387929dfc
commit
05199bcf82
160
README.md
160
README.md
|
@ -2,154 +2,93 @@
|
||||||
|
|
||||||
| Sponsored by [ppl](https://ppl.family) |
|
| Sponsored by [ppl](https://ppl.family) |
|
||||||
|
|
||||||
Automated node.js installers for macOS and Linux
|
Simple node.js installer for macOS and Linux
|
||||||
|
|
||||||
## QuickStart
|
## QuickStart
|
||||||
|
|
||||||
**node.js only**
|
|
||||||
|
|
||||||
```bash
|
```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
|
## 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))
|
[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] version
|
||||||
* [x] install location
|
* [x] install location
|
||||||
* [x] tools for building native modules
|
* [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
|
```bash
|
||||||
NODE_VERSION=v10 # Latest of v10
|
NODE_VERSION=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
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
|
||||||
```
|
```
|
||||||
export NODE_VERSION=v10
|
export NODE_VERSION=v10.10
|
||||||
curl -fsSL https://bit.ly/node-installer | bash
|
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.
|
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 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
|
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] curl & wget
|
||||||
|
* [x] git
|
||||||
* [x] rsync
|
* [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] pkg-config
|
||||||
* [x] node.js
|
* [x] node.js, jshint
|
||||||
* [x] 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
|
```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
|
```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**
|
See [The 15-Minute Guide to Secure VPS Access (for the Semi-Paranoid)](https://www.youtube.com/watch?v=YZzhIIJmlE0)
|
||||||
|
|
||||||
```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
|
|
||||||
```
|
|
||||||
|
|
||||||
## Notes
|
## 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
|
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
|
```bash
|
||||||
* curl
|
NODE_VERSION=$(curl -fsSL https://nodejs.org/dist/index.tab | tail -n +2 | cut -f 1 | head -1 )
|
||||||
* wget
|
echo "The current node.js version is $NODE_VERSION"
|
||||||
* git
|
```
|
||||||
* xcode / brew / build-essential / pkg-config / gcc
|
|
||||||
* node (including npm)
|
|
||||||
* jshint
|
|
||||||
|
|
||||||
**NOTE**: If you're running a node.js server on an edge server,
|
```bash
|
||||||
I'd highly recommend that you also install `fail2ban` to secure ssh -
|
BASE_VER="v10\\."
|
||||||
especially if you haven't switched your server to use key-only authentication.
|
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"
|
||||||
|
```
|
Loading…
Reference in New Issue