Created
December 4, 2020 20:11
-
-
Save dudash/0762ec43ef719e7b09270cf231129609 to your computer and use it in GitHub Desktop.
override Red Hat node.js 12 s2i to make npm verbose
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Prevent running assemble in builders different than official STI image. | |
# The official nodejs:8-onbuild already run npm install and use different | |
# application folder. | |
[ -d "/usr/src/app" ] && exit 0 | |
set -e | |
# FIXME: Linking of global modules is disabled for now as it causes npm failures | |
# under RHEL7 | |
# Global modules good to have | |
# npmgl=$(grep "^\s*[^#\s]" ../etc/npm_global_module_list | sort -u) | |
# Available global modules; only match top-level npm packages | |
#global_modules=$(npm ls -g 2> /dev/null | perl -ne 'print "$1\n" if /^\S+\s(\S+)\@[\d\.-]+/' | sort -u) | |
# List all modules in common | |
#module_list=$(/usr/bin/comm -12 <(echo "${global_modules}") | tr '\n' ' ') | |
# Link the modules | |
#npm link $module_list | |
safeLogging () { | |
if [[ $1 =~ http[s]?://.*@.*$ ]]; then | |
echo $1 | sed 's/^.*@/redacted@/' | |
else | |
echo $1 | |
fi | |
} | |
shopt -s dotglob | |
if [ -d /tmp/artifacts ] && [ "$(ls /tmp/artifacts/ 2>/dev/null)" ]; then | |
echo "---> Restoring previous build artifacts ..." | |
mv -T --verbose /tmp/artifacts/node_modules "${HOME}/node_modules" | |
fi | |
echo "---> Installing application source ..." | |
mv /tmp/src/* ./ | |
# Fix source directory permissions | |
fix-permissions ./ | |
if [ ! -z $HTTP_PROXY ]; then | |
echo "---> Setting npm http proxy to" $(safeLogging $HTTP_PROXY) | |
npm config set proxy $HTTP_PROXY | |
fi | |
if [ ! -z $http_proxy ]; then | |
echo "---> Setting npm http proxy to" $(safeLogging $http_proxy) | |
npm config set proxy $http_proxy | |
fi | |
if [ ! -z $HTTPS_PROXY ]; then | |
echo "---> Setting npm https proxy to" $(safeLogging $HTTPS_PROXY) | |
npm config set https-proxy $HTTPS_PROXY | |
fi | |
if [ ! -z $https_proxy ]; then | |
echo "---> Setting npm https proxy to" $(safeLogging $https_proxy) | |
npm config set https-proxy $https_proxy | |
fi | |
# Change the npm registry mirror if provided | |
if [ -n "$NPM_MIRROR" ]; then | |
npm config set registry $NPM_MIRROR | |
fi | |
# Set the DEV_MODE to false by default. | |
if [ -z "$DEV_MODE" ]; then | |
export DEV_MODE=false | |
fi | |
# If NODE_ENV is not set by the user, then NODE_ENV is determined by whether | |
# the container is run in development mode. | |
if [ -z "$NODE_ENV" ]; then | |
if [ "$DEV_MODE" == true ]; then | |
export NODE_ENV=development | |
else | |
export NODE_ENV=production | |
fi | |
fi | |
if [ "$NODE_ENV" != "production" ]; then | |
echo "---> Building your Node application from source" | |
npm install --verbose | |
else | |
echo "---> Installing all dependencies" | |
NODE_ENV=development npm install --verbose | |
#do not fail when there is no build script | |
echo "---> Building in production mode" | |
npm run build --if-present --verbose | |
echo "---> Pruning the development dependencies" | |
npm prune --verbose | |
# Clear the npm's cache and tmp directories only if they are not a docker volumes | |
NPM_CACHE=$(npm config get cache) | |
if ! mountpoint $NPM_CACHE; then | |
echo "---> Cleaning the npm cache $NPM_CACHE" | |
#As of npm@5 even the 'npm cache clean --force' does not fully remove the cache directory | |
# instead of $NPM_CACHE* use $NPM_CACHE/*. | |
# We do not want to delete .npmrc file. | |
rm -rf "${NPM_CACHE:?}/" | |
fi | |
NPM_TMP=$(npm config get tmp) | |
if ! mountpoint $NPM_TMP; then | |
echo "---> Cleaning the $NPM_TMP/npm-*" | |
rm -rf $NPM_TMP/npm-* | |
fi | |
fi | |
# Fix source directory permissions | |
fix-permissions ./ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
To use, make a folder in your node.js repo called
.s2i
and put this file in there calledassemble