PromucFlow_constructor/app/client/craco.common.config.js
Valera Melnikov 41a5110c85
chore: disable sourcemaps for non-prod builds and cleanup craco configs (#38706)
## Description
- reduce --max-old-space-size to 7168 for build. [Test for EE
here](https://github.com/appsmithorg/appsmith-ee/pull/5932).
- disable sourcemaps for non-prod build
- cleanup craco configs

## Automation

/ok-to-test tags="@tag.All"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!CAUTION]
> 🔴 🔴 🔴 Some tests have failed.
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/12825105662>
> Commit: 80b63a627b312f486f0d0baccf8a7d98b810471d
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=12825105662&attempt=1&selectiontype=test&testsstatus=failed&specsstatus=fail"
target="_blank">Cypress dashboard</a>.
> Tags: @tag.All
> Spec: 
> The following are new failures, please fix them before merging the PR:
<ol>
>
<li>cypress/e2e/Regression/ClientSide/Binding/Api_withPageload_Input_spec.js</ol>
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/identified-flaky-tests-65890b3c81d7400d08fa9ee3?branch=master"
target="_blank">List of identified flaky tests</a>.
> <hr>Fri, 17 Jan 2025 09:34:32 UTC
<!-- end of auto-generated comment: Cypress test results  -->


## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Configuration Updates**
	- Reduced memory allocation for the build process.
	- Updated Webpack configuration with Brotli compression.
	- Modified WebSocket settings for the development server.
	- Streamlined build configuration by removing unnecessary sections.

- **Performance Optimization**
	- Adjusted build memory limits.
	- Improved compression algorithm for build artifacts.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-01-17 12:35:34 +03:00

177 lines
5.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const CracoAlias = require("craco-alias");
const CracoBabelLoader = require("craco-babel-loader");
const path = require("path");
const webpack = require("webpack");
module.exports = {
eslint: {
enable: false,
},
typescript: {
enableTypeChecking: process.env.ENABLE_TYPE_CHECKING !== "false",
},
webpack: {
configure: {
resolve: {
alias: {
"lodash-es": "lodash",
},
fallback: {
assert: false,
stream: false,
util: false,
fs: false,
os: false,
path: false,
},
},
module: {
rules: [
{
test: /\.m?js/,
resolve: { fullySpecified: false },
},
{
test: /\.module\.css$/,
use: [
{
loader: "postcss-loader",
options: {
postcssOptions: {
plugins: [
"postcss-nesting",
"postcss-import",
"postcss-at-rules-variables",
"postcss-each",
"postcss-url",
"postcss-modules-values",
[
"cssnano",
{
preset: ["default"],
},
],
],
},
},
},
],
},
],
},
optimization: {
splitChunks: {
cacheGroups: {
icons: {
// This determines which modules are considered icons
test: (module) => {
const modulePath = module.resource;
if (!modulePath) return false;
return (
modulePath.match(/node_modules[\\\/]remixicon-react[\\\/]/) ||
modulePath.endsWith(".svg.js") ||
modulePath.endsWith(".svg")
);
},
// This determines which chunk to put the icon into.
//
// Why have three separate cache groups for three different kinds of
// icons? Purely as an optimization: not every page needs all icons,
// so we can avoid loading unused icons sometimes.
name: (module) => {
if (
module.resource?.match(
/node_modules[\\\/]remixicon-react[\\\/]/,
)
) {
return "remix-icons";
}
if (module.resource?.includes("blueprint")) {
return "blueprint-icons";
}
return "svg-icons";
},
// This specifies that only icons from import()ed chunks should be moved
chunks: "async",
// This makes webpack ignore the minimum chunk size requirement
enforce: true,
},
},
},
},
ignoreWarnings: [
function ignoreSourcemapsloaderWarnings(warning) {
return (
(warning.module?.resource.includes("node_modules") &&
warning.details?.includes("source-map-loader")) ??
false
);
},
function ignorePackageWarnings(warning) {
return (
warning.module?.resource.includes(
"/node_modules/@babel/standalone/babel.js",
) ||
warning.module?.resource.includes("/node_modules/sass/sass.dart.js")
);
},
],
plugins: [
// Replace BlueprintJSs icon component with our own implementation
// that code-splits icons away
new webpack.NormalModuleReplacementPlugin(
/@blueprintjs\/core\/lib\/\w+\/components\/icon\/icon\.\w+/,
require.resolve(
"./src/components/designSystems/blueprintjs/icon/index.js",
),
),
],
},
},
plugins: [
{
plugin: CracoAlias,
options: {
source: "tsconfig",
// baseUrl SHOULD be specified
// plugin does not take it from tsconfig
baseUrl: "./src",
// tsConfigPath should point to the file where "baseUrl" and "paths" are specified
tsConfigPath: "./tsconfig.path.json",
},
},
{
plugin: CracoBabelLoader,
options: {
includes: [path.resolve("packages")],
},
},
{
plugin: "prismjs",
options: {
languages: ["javascript"],
plugins: [],
theme: "twilight",
css: false,
},
},
{
// Prioritize the local src directory over node_modules.
// This matters for cases where `src/<dirname>` and `node_modules/<dirname>` both exist
// e.g., when `<dirname>` is `entities`: https://github.com/appsmithorg/appsmith/pull/20964#discussion_r1124782356
plugin: {
overrideWebpackConfig: ({ webpackConfig }) => {
webpackConfig.resolve.modules = [
path.resolve(__dirname, "src"),
...webpackConfig.resolve.modules,
];
return webpackConfig;
},
},
},
],
};