nextjs config file options
All checks were successful
Lint Checks / Run linter (pull_request) Successful in 40s
Smoke Test / Run basic test suite (pull_request) Successful in 4m17s
Webapp Test / Run webapp test suite (pull_request) Successful in 4m36s
Deploy Test / Run deploy test suite (pull_request) Successful in 5m19s
K8s Deploy Test / Run deploy test suite on kind/k8s (pull_request) Successful in 7m51s

This commit is contained in:
Vivian Phung 2024-07-21 23:41:29 +01:00
parent c81fb9581a
commit b1659823fb
No known key found for this signature in database

View File

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
if [ -n "$CERC_SCRIPT_DEBUG" ]; then if [ -n "$CERC_SCRIPT_DEBUG" ]; then
set -x set -x
fi fi
CERC_MIN_NEXTVER=13.4.2 CERC_MIN_NEXTVER=13.4.2
@ -20,18 +20,21 @@ if [ -z "$CERC_BUILD_TOOL" ]; then
fi fi
fi fi
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)
WORK_DIR="${1:-/app}" WORK_DIR="${1:-/app}"
cd "${WORK_DIR}" || exit 1 cd "${WORK_DIR}" || exit 1
# If this file doesn't exist at all, we'll get errors below. # If this file doesn't exist at all, we'll get errors below.
if [ ! -f "next.config.js" ]; then NEXTJS_CONFIG_FILE="next.config.js"
touch next.config.js if [ -f "next.config.mjs" ]; then
CONFIG_FILE_TO_BEAUTIFY="next.config.mjs"
elif [ ! -f "$NEXTJS_CONFIG_FILE" ]; then
touch "$NEXTJS_CONFIG_FILE"
fi fi
if [ ! -f "next.config.dist" ]; then if [ ! -f "next.config.dist" ]; then
cp next.config.js next.config.dist cp "$NEXTJS_CONFIG_FILE" next.config.dist
fi fi
which js-beautify >/dev/null which js-beautify >/dev/null
@ -39,17 +42,17 @@ if [ $? -ne 0 ]; then
npm i -g js-beautify npm i -g js-beautify
fi fi
js-beautify next.config.dist > next.config.js js-beautify next.config.dist >"$NEXTJS_CONFIG_FILE"
echo "" >> next.config.js echo "" >>"$NEXTJS_CONFIG_FILE"
WEBPACK_REQ_LINE=$(grep -n "require([\'\"]webpack[\'\"])" next.config.js | cut -d':' -f1) WEBPACK_REQ_LINE=$(grep -n "require([\'\"]webpack[\'\"])" next.config.js | cut -d':' -f1)
if [ -z "$WEBPACK_REQ_LINE" ]; then if [ -z "$WEBPACK_REQ_LINE" ]; then
cat > next.config.js.0 <<EOF cat >"$NEXTJS_CONFIG_FILE".0 <<EOF
const webpack = require('webpack'); const webpack = require('webpack');
EOF EOF
fi fi
cat > next.config.js.1 <<EOF cat >"$NEXTJS_CONFIG_FILE".1 <<EOF
let envMap; let envMap;
try { try {
// .env-list.json provides us a list of identifiers which should be replaced at runtime. // .env-list.json provides us a list of identifiers which should be replaced at runtime.
@ -68,21 +71,21 @@ try {
} }
EOF EOF
CONFIG_LINES=$(wc -l next.config.js | awk '{ print $1 }') CONFIG_LINES=$(wc -l "$NEXTJS_CONFIG_FILE" | awk '{ print $1 }')
ENV_LINE=$(grep -n 'env:' next.config.js | cut -d':' -f1) ENV_LINE=$(grep -n 'env:' "$NEXTJS_CONFIG_FILE" | cut -d':' -f1)
WEBPACK_CONF_LINE=$(egrep -n 'webpack:\s+\([^,]+,' next.config.js | cut -d':' -f1) WEBPACK_CONF_LINE=$(egrep -n 'webpack:\s+\([^,]+,' "$NEXTJS_CONFIG_FILE" | cut -d':' -f1)
NEXT_SECTION_ADJUSTMENT=0 NEXT_SECTION_ADJUSTMENT=0
if [ -n "$WEBPACK_CONF_LINE" ]; then if [ -n "$WEBPACK_CONF_LINE" ]; then
WEBPACK_CONF_VAR=$(egrep -n 'webpack:\s+\([^,]+,' next.config.js | cut -d',' -f1 | cut -d'(' -f2) WEBPACK_CONF_VAR=$(egrep -n 'webpack:\s+\([^,]+,' "$NEXTJS_CONFIG_FILE" | cut -d',' -f1 | cut -d'(' -f2)
head -$(( ${WEBPACK_CONF_LINE} )) next.config.js > next.config.js.2 head -$((${WEBPACK_CONF_LINE})) "$NEXTJS_CONFIG_FILE" >"$NEXTJS_CONFIG_FILE".2
cat > next.config.js.3 <<EOF cat >"$NEXTJS_CONFIG_FILE".3 <<EOF
$WEBPACK_CONF_VAR.plugins.push(new webpack.DefinePlugin(envMap)); $WEBPACK_CONF_VAR.plugins.push(new webpack.DefinePlugin(envMap));
EOF EOF
NEXT_SECTION_LINE=$((WEBPACK_CONF_LINE)) NEXT_SECTION_LINE=$((WEBPACK_CONF_LINE))
elif [ -n "$ENV_LINE" ]; then elif [ -n "$ENV_LINE" ]; then
head -$(( ${ENV_LINE} - 1 )) next.config.js > next.config.js.2 head -$((${ENV_LINE} - 1)) "$NEXTJS_CONFIG_FILE" >"$NEXTJS_CONFIG_FILE".2
cat > next.config.js.3 <<EOF cat >"$NEXTJS_CONFIG_FILE".3 <<EOF
webpack: (config) => { webpack: (config) => {
config.plugins.push(new webpack.DefinePlugin(envMap)); config.plugins.push(new webpack.DefinePlugin(envMap));
return config; return config;
@ -91,35 +94,35 @@ EOF
NEXT_SECTION_ADJUSTMENT=1 NEXT_SECTION_ADJUSTMENT=1
NEXT_SECTION_LINE=$ENV_LINE NEXT_SECTION_LINE=$ENV_LINE
else else
echo "WARNING: Cannot find location to insert environment variable map in next.config.js" 1>&2 echo "WARNING: Cannot find location to insert environment variable map in "$NEXTJS_CONFIG_FILE"" 1>&2
rm -f next.config.js.* rm -f "$NEXTJS_CONFIG_FILE".*
NEXT_SECTION_LINE=0 NEXT_SECTION_LINE=0
fi fi
tail -$(( ${CONFIG_LINES} - ${NEXT_SECTION_LINE} + ${NEXT_SECTION_ADJUSTMENT} )) next.config.js > next.config.js.5 tail -$((${CONFIG_LINES} - ${NEXT_SECTION_LINE} + ${NEXT_SECTION_ADJUSTMENT})) "$NEXTJS_CONFIG_FILE" >"$NEXTJS_CONFIG_FILE".5
cat next.config.js.* | sed 's/^ *//g' | js-beautify | grep -v 'process\.\env\.' | js-beautify > next.config.js cat "$NEXTJS_CONFIG_FILE".* | sed 's/^ *//g' | js-beautify | grep -v 'process\.\env\.' | js-beautify >"$NEXTJS_CONFIG_FILE"
rm next.config.js.* rm "$NEXTJS_CONFIG_FILE".*
"${SCRIPT_DIR}/find-env.sh" "$(pwd)" > .env-list.json "${SCRIPT_DIR}/find-env.sh" "$(pwd)" >.env-list.json
if [ ! -f "package.dist" ]; then if [ ! -f "package.dist" ]; then
cp package.json package.dist cp package.json package.dist
fi fi
cat package.dist | jq '.scripts.cerc_compile = "next experimental-compile"' | jq '.scripts.cerc_generate = "next experimental-generate"' > package.json cat package.dist | jq '.scripts.cerc_compile = "next experimental-compile"' | jq '.scripts.cerc_generate = "next experimental-generate"' >package.json
CUR_NEXT_VERSION="`jq -r '.dependencies.next' package.json`" CUR_NEXT_VERSION="$(jq -r '.dependencies.next' package.json)"
if [ "$CERC_NEXT_VERSION" != "keep" ] && [ "$CUR_NEXT_VERSION" != "$CERC_NEXT_VERSION" ]; then if [ "$CERC_NEXT_VERSION" != "keep" ] && [ "$CUR_NEXT_VERSION" != "$CERC_NEXT_VERSION" ]; then
echo "Changing 'next' version specifier from '$CUR_NEXT_VERSION' to '$CERC_NEXT_VERSION' (set with '--extra-build-args \"--build-arg CERC_NEXT_VERSION=$CERC_NEXT_VERSION\"')" echo "Changing 'next' version specifier from '$CUR_NEXT_VERSION' to '$CERC_NEXT_VERSION' (set with '--extra-build-args \"--build-arg CERC_NEXT_VERSION=$CERC_NEXT_VERSION\"')"
cat package.json | jq ".dependencies.next = \"$CERC_NEXT_VERSION\"" > package.json.$$ cat package.json | jq ".dependencies.next = \"$CERC_NEXT_VERSION\"" >package.json.$$
mv package.json.$$ package.json mv package.json.$$ package.json
fi fi
time $CERC_BUILD_TOOL install || exit 1 time $CERC_BUILD_TOOL install || exit 1
CUR_NEXT_VERSION=`jq -r '.version' node_modules/next/package.json` CUR_NEXT_VERSION=$(jq -r '.version' node_modules/next/package.json)
semver -p -r ">=$CERC_MIN_NEXTVER" $CUR_NEXT_VERSION semver -p -r ">=$CERC_MIN_NEXTVER" $CUR_NEXT_VERSION
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
@ -138,7 +141,7 @@ to use for the build with:
############################################################################### ###############################################################################
EOF EOF
cat package.json | jq ".dependencies.next = \"^$CERC_MIN_NEXTVER\"" > package.json.$$ cat package.json | jq ".dependencies.next = \"^$CERC_MIN_NEXTVER\"" >package.json.$$
mv package.json.$$ package.json mv package.json.$$ package.json
time $CERC_BUILD_TOOL install || exit 1 time $CERC_BUILD_TOOL install || exit 1
fi fi