From da847b48d02916489370cee416f49d44520e6be0 Mon Sep 17 00:00:00 2001 From: Sangeeth Sivan <74818788+berzerkeer@users.noreply.github.com> Date: Tue, 18 Apr 2023 14:10:11 +0530 Subject: [PATCH] feat: put airgap client build in a separate folder (#22413) ## Description - Adds a new build output dir `build_airgap` for airgap client builds. Fixes #22414 --- app/client/.gitignore | 1 + app/client/build.sh | 12 ++++++++++-- app/client/craco.build.config.js | 23 +++++++++++++++++++++-- 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/app/client/.gitignore b/app/client/.gitignore index 7a0d995bd8..22aac9f345 100755 --- a/app/client/.gitignore +++ b/app/client/.gitignore @@ -12,6 +12,7 @@ # production /build +/build_airgap # misc .DS_Store diff --git a/app/client/build.sh b/app/client/build.sh index 6c05d18342..fc621afd76 100755 --- a/app/client/build.sh +++ b/app/client/build.sh @@ -6,13 +6,21 @@ GIT_SHA=$(eval git rev-parse HEAD) echo $GIT_SHA echo "Sentry Auth Token: $SENTRY_AUTH_TOKEN" +if [ "$REACT_APP_AIRGAP_ENABLED" == "true" ]; then + echo "Building for airgapped Appsmith instances" + OUTPUT_PATH=build_airgap +else + echo "Building for non-airgapped Appsmith instances" + OUTPUT_PATH=build +fi + # build cra app REACT_APP_SENTRY_RELEASE=$GIT_SHA REACT_APP_CLIENT_LOG_LEVEL=ERROR EXTEND_ESLINT=true craco --max-old-space-size=4096 build --config craco.build.config.js if [ "$GITHUB_REPOSITORY" == "appsmithorg/appsmith-ee" ]; then echo "Deleting sourcemaps for EE" - rm ./build/static/js/*.js.map - rm ./build/static/js/*.js.map.gz + rm ./$OUTPUT_PATH/static/js/*.js.map + rm ./$OUTPUT_PATH/static/js/*.js.map.gz fi echo "build finished" diff --git a/app/client/craco.build.config.js b/app/client/craco.build.config.js index 608c5e731f..39eaacb5dc 100644 --- a/app/client/craco.build.config.js +++ b/app/client/craco.build.config.js @@ -5,9 +5,9 @@ const common = require("./craco.common.config.js"); const WorkboxPlugin = require("workbox-webpack-plugin"); const CompressionPlugin = require("compression-webpack-plugin"); const { RetryChunkLoadPlugin } = require("webpack-retry-chunk-load-plugin"); - +const path = require("path"); const env = process.env.REACT_APP_ENVIRONMENT; - +const isAirgap = process.env.REACT_APP_AIRGAP_ENABLED; const plugins = []; plugins.push( @@ -66,6 +66,25 @@ plugins.push( module.exports = merge(common, { webpack: { + configure: (webpackConfig, { env, paths }) => { + if (env.REACT_APP_AIRGAP_ENABLED === "true" || isAirgap === "true") { + paths.appBuild = webpackConfig.output.path = + path.resolve("build_airgap"); + } + webpackConfig.resolve.fallback = { + assert: false, + stream: false, + util: false, + fs: false, + os: false, + path: false, + }; + webpackConfig.module.rules.push({ + test: /\.m?js/, + resolve: { fullySpecified: false }, + }); + return webpackConfig; + }, plugins: plugins, }, jest: {