NODEJS Helper
This commit is contained in:
parent
f9ccc2c5db
commit
7171d2a049
@ -153,3 +153,69 @@ exit-script() {
|
|||||||
echo -e "\n${CROSS}${RD}User exited script${CL}\n"
|
echo -e "\n${CROSS}${RD}User exited script${CL}\n"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
install_node_and_modules() {
|
||||||
|
local NODE_VERSION="${NODE_VERSION:-22}"
|
||||||
|
local NODE_MODULE="${NODE_MODULE:-}"
|
||||||
|
local CURRENT_NODE_VERSION=""
|
||||||
|
local NEED_NODE_INSTALL=false
|
||||||
|
|
||||||
|
if command -v node >/dev/null; then
|
||||||
|
CURRENT_NODE_VERSION="$(node -v | grep -oP '^v\K[0-9]+')"
|
||||||
|
if [[ "$CURRENT_NODE_VERSION" != "$NODE_VERSION" ]]; then
|
||||||
|
msg_info "Node.js Version $CURRENT_NODE_VERSION found, replacing with $NODE_VERSION"
|
||||||
|
NEED_NODE_INSTALL=true
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
msg_info "Node.js not found, installing version $NODE_VERSION"
|
||||||
|
NEED_NODE_INSTALL=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$NEED_NODE_INSTALL" == true ]]; then
|
||||||
|
$STD apt-get purge -y nodejs
|
||||||
|
rm -f /etc/apt/sources.list.d/nodesource.list
|
||||||
|
rm -f /etc/apt/keyrings/nodesource.gpg
|
||||||
|
|
||||||
|
mkdir -p /etc/apt/keyrings
|
||||||
|
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | \
|
||||||
|
gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
||||||
|
|
||||||
|
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_${NODE_VERSION}.x nodistro main" \
|
||||||
|
> /etc/apt/sources.list.d/nodesource.list
|
||||||
|
|
||||||
|
$STD apt-get update
|
||||||
|
$STD apt-get install -y nodejs
|
||||||
|
msg_ok "Installed Node.js ${NODE_VERSION}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n "$NODE_MODULE" ]]; then
|
||||||
|
IFS=',' read -ra MODULES <<< "$NODE_MODULE"
|
||||||
|
for mod in "${MODULES[@]}"; do
|
||||||
|
local MODULE_NAME MODULE_REQ_VERSION MODULE_INSTALLED_VERSION
|
||||||
|
if [[ "$mod" == *"@"* ]]; then
|
||||||
|
MODULE_NAME="${mod%@*}"
|
||||||
|
MODULE_REQ_VERSION="${mod#*@}"
|
||||||
|
else
|
||||||
|
MODULE_NAME="$mod"
|
||||||
|
MODULE_REQ_VERSION="latest"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if npm list -g --depth=0 "$MODULE_NAME" >/dev/null 2>&1; then
|
||||||
|
MODULE_INSTALLED_VERSION="$(npm list -g --depth=0 "$MODULE_NAME" | grep "$MODULE_NAME@" | awk -F@ '{print $2}' | tr -d '[:space:]')"
|
||||||
|
if [[ "$MODULE_REQ_VERSION" != "latest" && "$MODULE_REQ_VERSION" != "$MODULE_INSTALLED_VERSION" ]]; then
|
||||||
|
msg_info "Updating $MODULE_NAME from v$MODULE_INSTALLED_VERSION to v$MODULE_REQ_VERSION"
|
||||||
|
$STD npm install -g "${MODULE_NAME}@${MODULE_REQ_VERSION}"
|
||||||
|
elif [[ "$MODULE_REQ_VERSION" == "latest" ]]; then
|
||||||
|
msg_info "Updating $MODULE_NAME to latest version"
|
||||||
|
$STD npm install -g "${MODULE_NAME}@latest"
|
||||||
|
else
|
||||||
|
msg_ok "$MODULE_NAME@$MODULE_INSTALLED_VERSION already installed"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
msg_info "Installing $MODULE_NAME@$MODULE_REQ_VERSION"
|
||||||
|
$STD npm install -g "${MODULE_NAME}@${MODULE_REQ_VERSION}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
msg_ok "Node Modules processed"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user