@gravity-ui/app-builder 0.24.1-beta.1 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -249,6 +249,7 @@ With this `{rootDir}/src/ui/tsconfig.json`:
249
249
  - `locale`: (`string[]=['ru']`) — list of `moment.js` or `day.js` locales to include, e.g. `['de', 'es']`. Locale `En` is always present.
250
250
  - `safari10` (`boolean`) — Enables `safari10` terser's option. [Terser options](https://github.com/terser/terser#minify-options)
251
251
  - `transformCssWithLightningCss` (`boolean`) — use [Lighting CSS](https://lightningcss.dev) to transform and minimize css instead of PostCSS and cssnano
252
+ - `lightningCssMinimizerOptions` (`(options: LightningCssMinimizerRspackPluginOptions) => LightningCssMinimizerRspackPluginOptions`) - modify or return a custom [LightningCssMinimizerRspackPlugin](https://rspack.dev/plugins/rspack/lightning-css-minimizer-rspack-plugin)
252
253
  - `terser` (`(options: TerserOptions) => TerserOptions`) - modify or return a custom [Terser options](https://github.com/terser/terser#minify-options).
253
254
 
254
255
  ##### Monaco editor support
@@ -95,22 +95,9 @@ async function buildDevServer(config) {
95
95
  }));
96
96
  }
97
97
  }
98
- // Rspack multicompiler dont work with lazy compilation.
99
- // Pass a single config to avoid multicompiler when SSR disabled.
100
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
101
- const compiler = bundler === 'rspack'
102
- ? (0, core_1.rspack)(isSsr ? rspackConfigs : rspackConfigs[0])
103
- : (0, webpack_1.default)(webpackConfigs);
104
98
  const staticFolder = path.resolve(paths_1.default.appDist, 'public');
105
99
  const options = {
106
100
  static: staticFolder,
107
- setupMiddlewares(middlewares) {
108
- if (config.client.lazyCompilation && bundler === 'rspack') {
109
- const lazyCompilationMiddleware = core_1.rspack.experiments.lazyCompilationMiddleware(compiler, rspackConfigs[0]?.experiments?.lazyCompilation);
110
- return [lazyCompilationMiddleware, ...middlewares];
111
- }
112
- return middlewares;
113
- },
114
101
  devMiddleware: {
115
102
  publicPath,
116
103
  stats: 'errors-warnings',
@@ -185,9 +172,14 @@ async function buildDevServer(config) {
185
172
  options.proxy = proxy;
186
173
  let server;
187
174
  if (bundler === 'rspack') {
175
+ // Rspack multicompiler dont work with lazy compilation.
176
+ // Pass a single config to avoid multicompiler when SSR disabled.
177
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
178
+ const compiler = (0, core_1.rspack)(isSsr ? rspackConfigs : rspackConfigs[0]);
188
179
  server = new dev_server_1.RspackDevServer(options, compiler);
189
180
  }
190
181
  else {
182
+ const compiler = (0, webpack_1.default)(webpackConfigs);
191
183
  server = new webpack_dev_server_1.default(options, compiler);
192
184
  }
193
185
  try {
@@ -3,7 +3,7 @@ import type { EditorFeature } from 'monaco-editor-webpack-plugin/out/features';
3
3
  import type { IFeatureDefinition } from 'monaco-editor-webpack-plugin/out/types';
4
4
  import type { Options as MomentTzOptions } from 'moment-timezone-data-webpack-plugin';
5
5
  import type { Configuration, DefinePlugin, FileCacheOptions, MemoryCacheOptions } from 'webpack';
6
- import type { Configuration as RspackConfiguration, SwcJsMinimizerRspackPluginOptions } from '@rspack/core';
6
+ import type { LightningCssMinimizerRspackPluginOptions, Configuration as RspackConfiguration, SwcJsMinimizerRspackPluginOptions } from '@rspack/core';
7
7
  import type * as Babel from '@babel/core';
8
8
  import type * as Swc from '@swc/core';
9
9
  import type { ServerConfiguration } from 'webpack-dev-server';
@@ -239,6 +239,8 @@ export interface ClientConfig {
239
239
  * Available with rspack bundler.
240
240
  */
241
241
  swcMinimizerOptions?: (options: SwcJsMinimizerRspackPluginOptions) => SwcJsMinimizerRspackPluginOptions;
242
+ /** Modify or return a custom [LightningCssMinimizerRspackPlugin](https://rspack.dev/plugins/rspack/lightning-css-minimizer-rspack-plugin) */
243
+ lightningCssMinimizerOptions?: (options: LightningCssMinimizerRspackPluginOptions) => LightningCssMinimizerRspackPluginOptions;
242
244
  ssr?: {
243
245
  noExternal?: string | RegExp | (string | RegExp)[] | true;
244
246
  moduleType?: 'commonjs' | 'esm';
@@ -288,14 +288,26 @@ function configureRspackExperiments(options) {
288
288
  return undefined;
289
289
  }
290
290
  let lazyCompilation;
291
+ let port;
291
292
  if (config.lazyCompilation) {
293
+ if (typeof config.lazyCompilation === 'object') {
294
+ port = config.lazyCompilation.port;
295
+ }
292
296
  lazyCompilation = {
293
297
  // Lazy compilation works without problems only with lazy imports
294
298
  // See https://github.com/web-infra-dev/rspack/issues/8503
295
299
  entries: false,
296
300
  imports: true,
297
- serverUrl: `http://localhost:${config.lazyCompilation.port}`,
298
- client: require.resolve('./lazy-client.js'),
301
+ backend: {
302
+ client: require.resolve('./lazy-client.js'),
303
+ ...(port
304
+ ? {
305
+ listen: {
306
+ port,
307
+ },
308
+ }
309
+ : {}),
310
+ },
299
311
  test(module) {
300
312
  // make sure that lazy-client.js won't be lazy compiled)
301
313
  return !module.nameForCondition()?.endsWith('lazy-client.js');
@@ -1143,7 +1155,18 @@ function configureRspackOptimization(helperOptions) {
1143
1155
  }
1144
1156
  let cssMinimizer;
1145
1157
  if (config.transformCssWithLightningCss) {
1146
- cssMinimizer = new core_1.rspack.LightningCssMinimizerRspackPlugin();
1158
+ let lightningCssMinifyOptions = {
1159
+ minimizerOptions: {
1160
+ exclude: {
1161
+ langSelectorList: true,
1162
+ },
1163
+ },
1164
+ };
1165
+ const { lightningCssMinimizerOptions } = config;
1166
+ if (typeof lightningCssMinimizerOptions === 'function') {
1167
+ lightningCssMinifyOptions = lightningCssMinimizerOptions(lightningCssMinifyOptions);
1168
+ }
1169
+ cssMinimizer = new core_1.rspack.LightningCssMinimizerRspackPlugin(lightningCssMinifyOptions);
1147
1170
  }
1148
1171
  else {
1149
1172
  const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/app-builder",
3
- "version": "0.24.1-beta.1",
3
+ "version": "0.26.0",
4
4
  "description": "Develop and build your React client-server projects, powered by typescript and webpack",
5
5
  "license": "MIT",
6
6
  "type": "commonjs",
@@ -70,11 +70,11 @@
70
70
  "@babel/runtime": "^7.26.0",
71
71
  "@okikio/sharedworker": "^1.0.7",
72
72
  "@pmmmwh/react-refresh-webpack-plugin": "^0.5.15",
73
- "@rsdoctor/rspack-plugin": "^1.0.1",
74
- "@rsdoctor/webpack-plugin": "^1.0.1",
75
- "@rspack/core": "1.3.4",
76
- "@rspack/dev-server": "^1.1.1",
77
- "@rspack/plugin-react-refresh": "^1.2.0",
73
+ "@rsdoctor/rspack-plugin": "^0.4.13",
74
+ "@rsdoctor/webpack-plugin": "^0.4.13",
75
+ "@rspack/core": "1.2.8",
76
+ "@rspack/dev-server": "^1.0.10",
77
+ "@rspack/plugin-react-refresh": "^1.0.1",
78
78
  "@statoscope/webpack-plugin": "^5.29.0",
79
79
  "@statoscope/stats": "^5.28.1",
80
80
  "@statoscope/stats-extension-compressed": "^5.28.1",