| 2158 | * @returns {void} |
| 2159 | */ |
| 2160 | const applyOptimizationDefaults = ( |
| 2161 | optimization, |
| 2162 | { production, development, css, records } |
| 2163 | ) => { |
| 2164 | D(optimization, "removeAvailableModules", false); |
| 2165 | D(optimization, "removeEmptyChunks", true); |
| 2166 | D(optimization, "mergeDuplicateChunks", true); |
| 2167 | D(optimization, "flagIncludedChunks", production); |
| 2168 | F(optimization, "moduleIds", () => { |
| 2169 | if (production) return "deterministic"; |
| 2170 | if (development) return "named"; |
| 2171 | return "natural"; |
| 2172 | }); |
| 2173 | F(optimization, "chunkIds", () => { |
| 2174 | if (production) return "deterministic"; |
| 2175 | if (development) return "named"; |
| 2176 | return "natural"; |
| 2177 | }); |
| 2178 | F(optimization, "sideEffects", () => (production ? true : "flag")); |
| 2179 | D(optimization, "providedExports", true); |
| 2180 | D(optimization, "usedExports", production); |
| 2181 | D(optimization, "innerGraph", production); |
| 2182 | D(optimization, "inlineExports", production); |
| 2183 | D(optimization, "mangleExports", production); |
| 2184 | D(optimization, "concatenateModules", production); |
| 2185 | D(optimization, "avoidEntryIife", production); |
| 2186 | D(optimization, "runtimeChunk", false); |
| 2187 | D(optimization, "emitOnErrors", !production); |
| 2188 | D(optimization, "checkWasmTypes", production); |
| 2189 | D(optimization, "mangleWasmImports", false); |
| 2190 | D(optimization, "portableRecords", records); |
| 2191 | D(optimization, "realContentHash", production); |
| 2192 | D(optimization, "minimize", production); |
| 2193 | A(optimization, "minimizer", () => [ |
| 2194 | { |
| 2195 | apply: (compiler) => { |
| 2196 | // Lazy load the minimizer plugin |
| 2197 | const TerserPlugin = require("minimizer-webpack-plugin"); |
| 2198 | |
| 2199 | new TerserPlugin({ |
| 2200 | terserOptions: { |
| 2201 | compress: { |
| 2202 | passes: 2 |
| 2203 | } |
| 2204 | } |
| 2205 | }).apply(/** @type {EXPECTED_ANY} */ (compiler)); |
| 2206 | } |
| 2207 | } |
| 2208 | ]); |
| 2209 | F(optimization, "nodeEnv", () => { |
| 2210 | if (production) return "production"; |
| 2211 | if (development) return "development"; |
| 2212 | return false; |
| 2213 | }); |
| 2214 | const { splitChunks } = optimization; |
| 2215 | if (splitChunks) { |
| 2216 | A(splitChunks, "defaultSizeTypes", () => |
| 2217 | css |