forked from coolaj86/node-installer.sh
merge
This commit is contained in:
commit
b562d6dd3b
64
README.md
64
README.md
|
@ -35,29 +35,75 @@ wget -nv https://bit.ly/node-installer -O - ./node-installer.sh; bash ./node-ins
|
|||
|
||||
### Choosing a specific version
|
||||
|
||||
**Latest**
|
||||
|
||||
```bash
|
||||
echo "Current node.js version is $(curl -fsSL https://nodejs.org/dist/index.tab | head -2 | tail -1 | cut -f 1)"
|
||||
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
|
||||
# To install a specific version rather than defaulting to latest
|
||||
# latest version at time of writing are v8.11.1 and v10.1.0
|
||||
export NODEJS_VER="v10.1.0"
|
||||
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_PREFIIX` anyway).
|
||||
(which you usually want to be the same as `NPM_CONFIG_PREFIX` anyway).
|
||||
|
||||
```bash
|
||||
export NPM_CONFIG_PREFIX=/tmp/user/local
|
||||
export NODE_PATH=/tmp/user/local/lib/node_modules
|
||||
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
|
||||
If you want to add the install location to your `PATH`:
|
||||
|
||||
```bash
|
||||
PATH=$PATH:/tmp/user/local/bin
|
||||
```
|
||||
|
||||
|
@ -101,7 +147,7 @@ wget -nv https://bit.ly/node-installer -O /tmp/node-installer.sh; bash /tmp/node
|
|||
|
||||
### Other things you should know
|
||||
|
||||
This is what gets installed:
|
||||
This is what gets installed with the dev dependencies:
|
||||
|
||||
* rsync
|
||||
* curl
|
||||
|
|
22
install.sh
22
install.sh
|
@ -14,7 +14,7 @@
|
|||
|
||||
# Not every platform has or needs sudo, gotta save them O(1)s...
|
||||
sudo_cmd=""
|
||||
((EUID)) && [[ -z "$ANDROID_ROOT" ]] && sudo_cmd="sudo"
|
||||
((EUID)) && [[ -z "${ANDROID_ROOT:-}" ]] && sudo_cmd="sudo"
|
||||
|
||||
deps_flag="$1"
|
||||
set -e
|
||||
|
@ -247,12 +247,23 @@ if [ -n "${NODEJS_VER:-}" ]; then
|
|||
fi
|
||||
fi
|
||||
|
||||
if [ -z "${NODEJS_VER:-}" ]; then
|
||||
NODEJS_VER="${NODEJS_VER:-v}" # Search for 'v' at the least
|
||||
# sort -rV # will sort by version number, but it appears these are already sorted
|
||||
# tail -n +2 # starts at line two (1-indexed) and all after (omits the csv header with 'version' and such)
|
||||
# cut -f 1 # gets only the first column
|
||||
# head -n 1 # gets only the most recent version
|
||||
my_char="."
|
||||
my_count=$(awk -F"${my_char}" '{print NF-1}' <<< "${NODEJS_VER}")
|
||||
# get the latest version if partial
|
||||
if [ $my_count -ne 2 ]; then
|
||||
if [ "$NODEJS_VER" != "v" ]; then
|
||||
NODEJS_VER="$NODEJS_VER\\."
|
||||
fi
|
||||
if [ -n "$(type -p curl)" ]; then
|
||||
NODEJS_VER=$(curl -fsL "$NODEJS_BASE_URL/dist/index.tab" | head -n 2 | tail -1 | cut -f 1) \
|
||||
NODEJS_VER=$(curl -fsL "$NODEJS_BASE_URL/dist/index.tab" | tail -n +2 | cut -f 1 | grep "^$NODEJS_VER" | head -n 1) \
|
||||
|| echo 'error automatically determining current node.js version'
|
||||
elif [ -n "$(type -p wget)" ]; then
|
||||
NODEJS_VER=$(wget --quiet "$NODEJS_BASE_URL/dist/index.tab" -O - | head -n 2 | tail -1 | cut -f 1) \
|
||||
NODEJS_VER=$(wget --quiet "$NODEJS_BASE_URL/dist/index.tab" -O - | tail -n +2 | cut -f 1 | grep "^$NODEJS_VER" | head -n 1) \
|
||||
|| echo 'error automatically determining current node.js version'
|
||||
else
|
||||
echo "Found neither 'curl' nor 'wget'. Can't Continue."
|
||||
|
@ -286,7 +297,7 @@ if [ -e "$node_install_path/bin/node" ]; then
|
|||
echo ""
|
||||
echo "node.js is already installed as node $($node_install_path/bin/node -v | grep v)"
|
||||
echo ""
|
||||
echo "to reinstall please first run: rm $node_install_path/bin/node"
|
||||
echo "to reinstall as ${NODEJS_VER} please first run: rm $node_install_path/bin/node"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
|
@ -297,6 +308,7 @@ if [ -n "${NODEJS_VER}" ]; then
|
|||
bash "$my_tmp/${INSTALL_FILE}" "${NODEJS_VER}"
|
||||
fi
|
||||
|
||||
mkdir -p $node_install_path/lib/node_modules || $sudo_cmd mkdir -p $node_install_path/lib/node_modules
|
||||
chown -R $(whoami) $node_install_path/lib/node_modules || $sudo_cmd chown -R $(whoami) $node_install_path/lib/node_modules
|
||||
|
||||
echo ""
|
||||
|
|
Loading…
Reference in New Issue