2020-07-10 09:24:06 +00:00
|
|
|
|
const CracoAlias = require("craco-alias");
|
2023-03-03 06:47:35 +00:00
|
|
|
|
const CracoBabelLoader = require("craco-babel-loader");
|
|
|
|
|
|
const path = require("path");
|
2023-05-11 05:26:03 +00:00
|
|
|
|
const webpack = require("webpack");
|
2020-06-02 07:54:31 +00:00
|
|
|
|
|
2019-10-29 12:02:58 +00:00
|
|
|
|
module.exports = {
|
2022-06-21 13:57:34 +00:00
|
|
|
|
devServer: {
|
|
|
|
|
|
client: {
|
|
|
|
|
|
webSocketURL: {
|
2022-07-07 08:30:57 +00:00
|
|
|
|
hostname: "127.0.0.1",
|
|
|
|
|
|
pathname: "/ws",
|
|
|
|
|
|
port: 3000,
|
|
|
|
|
|
protocol: "ws",
|
2022-06-21 13:57:34 +00:00
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
2023-05-11 05:26:03 +00:00
|
|
|
|
babel: {
|
|
|
|
|
|
plugins: ["babel-plugin-lodash"],
|
|
|
|
|
|
},
|
2022-06-21 13:57:34 +00:00
|
|
|
|
webpack: {
|
|
|
|
|
|
configure: {
|
|
|
|
|
|
resolve: {
|
2023-05-11 05:26:03 +00:00
|
|
|
|
alias: {
|
|
|
|
|
|
"lodash-es": "lodash",
|
|
|
|
|
|
},
|
2022-06-21 13:57:34 +00:00
|
|
|
|
fallback: {
|
|
|
|
|
|
assert: false,
|
|
|
|
|
|
stream: false,
|
|
|
|
|
|
util: false,
|
|
|
|
|
|
fs: false,
|
|
|
|
|
|
os: false,
|
|
|
|
|
|
path: false,
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
module: {
|
|
|
|
|
|
rules: [
|
|
|
|
|
|
{
|
|
|
|
|
|
test: /\.m?js/,
|
|
|
|
|
|
resolve: { fullySpecified: false },
|
|
|
|
|
|
},
|
2023-09-15 07:17:06 +00:00
|
|
|
|
{
|
|
|
|
|
|
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"],
|
|
|
|
|
|
},
|
|
|
|
|
|
],
|
|
|
|
|
|
],
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
],
|
|
|
|
|
|
},
|
2022-06-21 13:57:34 +00:00
|
|
|
|
],
|
|
|
|
|
|
},
|
2023-06-16 06:08:08 +00:00
|
|
|
|
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,
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
2022-06-21 13:57:34 +00:00
|
|
|
|
ignoreWarnings: [
|
|
|
|
|
|
function ignoreSourcemapsloaderWarnings(warning) {
|
|
|
|
|
|
return (
|
2024-01-16 06:29:37 +00:00
|
|
|
|
(warning.module?.resource.includes("node_modules") &&
|
|
|
|
|
|
warning.details?.includes("source-map-loader")) ||
|
|
|
|
|
|
warning.module?.resource.includes("/node_modules/@babel/standalone/babel.js")
|
|
|
|
|
|
) ?? false;
|
2022-06-21 13:57:34 +00:00
|
|
|
|
},
|
|
|
|
|
|
],
|
2023-05-11 05:26:03 +00:00
|
|
|
|
plugins: [
|
|
|
|
|
|
// Replace BlueprintJS’s 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",
|
|
|
|
|
|
),
|
|
|
|
|
|
),
|
|
|
|
|
|
],
|
2021-11-23 08:01:46 +00:00
|
|
|
|
},
|
|
|
|
|
|
},
|
2020-06-02 07:54:31 +00:00
|
|
|
|
plugins: [
|
2020-07-10 09:24:06 +00:00
|
|
|
|
{
|
|
|
|
|
|
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",
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
2023-03-03 06:47:35 +00:00
|
|
|
|
{
|
|
|
|
|
|
plugin: CracoBabelLoader,
|
|
|
|
|
|
options: {
|
|
|
|
|
|
includes: [path.resolve("packages")],
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
2020-06-02 07:54:31 +00:00
|
|
|
|
{
|
|
|
|
|
|
plugin: "prismjs",
|
|
|
|
|
|
options: {
|
|
|
|
|
|
languages: ["javascript"],
|
|
|
|
|
|
plugins: [],
|
|
|
|
|
|
theme: "twilight",
|
|
|
|
|
|
css: false,
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
2023-05-11 05:26:03 +00:00
|
|
|
|
{
|
|
|
|
|
|
// 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;
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
2020-06-02 07:54:31 +00:00
|
|
|
|
],
|
2022-04-18 08:21:36 +00:00
|
|
|
|
};
|