arui-scripts 18.6.1 → 19.0.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.
Files changed (49) hide show
  1. package/.turbo/turbo-test.log +6 -10
  2. package/CHANGELOG.md +31 -0
  3. package/build/commands/build/build-wrapper.d.ts +3 -3
  4. package/build/commands/build/build-wrapper.js +2 -2
  5. package/build/commands/bundle-analyze/index.js +5 -3
  6. package/build/commands/util/client-assets-sizes.d.ts +1 -1
  7. package/build/commands/util/run-client-dev-server.d.ts +1 -1
  8. package/build/commands/util/run-client-dev-server.js +6 -6
  9. package/build/commands/util/run-server-watch-compiler.d.ts +2 -2
  10. package/build/commands/util/run-server-watch-compiler.js +2 -2
  11. package/build/configs/app-configs/calculate-dependent-config.js +1 -1
  12. package/build/configs/app-configs/get-defaults.js +4 -7
  13. package/build/configs/app-configs/types.d.ts +4 -17
  14. package/build/configs/app-configs/warn-about-deprecations.js +14 -5
  15. package/build/configs/babel-client.js +1 -1
  16. package/build/configs/babel-dependencies.js +1 -1
  17. package/build/configs/babel-server.js +1 -1
  18. package/build/configs/client-env-config/client-config-plugin.d.ts +1 -1
  19. package/build/configs/config-extras/minimizers/imagemin/imagemin.d.ts +27 -1
  20. package/build/configs/config-extras/minimizers/imagemin/imagemin.js +55 -41
  21. package/build/configs/dev-server.js +39 -30
  22. package/build/configs/modules.d.ts +3 -3
  23. package/build/configs/modules.js +25 -2
  24. package/build/configs/stats-options.d.ts +2 -2
  25. package/build/configs/util/apply-overrides.d.ts +12 -12
  26. package/build/configs/util/find-loader.d.ts +2 -2
  27. package/build/configs/util/find-plugin.d.ts +9 -6
  28. package/build/configs/webpack.client.d.ts +2 -2
  29. package/build/configs/webpack.client.dev.d.ts +1 -1
  30. package/build/configs/webpack.client.js +23 -55
  31. package/build/configs/webpack.client.prod.d.ts +1 -1
  32. package/build/configs/webpack.server.d.ts +1 -1
  33. package/build/configs/webpack.server.dev.d.ts +1 -1
  34. package/build/configs/webpack.server.js +13 -43
  35. package/build/configs/webpack.server.prod.d.ts +1 -1
  36. package/build/plugins/arui-runtime/arui-runtime-module.d.ts +2 -2
  37. package/build/plugins/arui-runtime/arui-runtime-module.js +5 -8
  38. package/build/plugins/arui-runtime/index.d.ts +2 -2
  39. package/build/plugins/arui-runtime/index.js +2 -5
  40. package/build/plugins/reload-server-plugin.d.ts +10 -0
  41. package/build/plugins/reload-server-plugin.js +44 -0
  42. package/build/plugins/watch-missing-node-modules-plugin.d.ts +5 -5
  43. package/build/plugins/watch-missing-node-modules-plugin.js +3 -1
  44. package/build/tsconfig-local.tsbuildinfo +1 -1
  45. package/docs/commands.md +1 -1
  46. package/docs/settings.md +10 -33
  47. package/package.json +8 -6
  48. package/build/plugins/reload-server-webpack-plugin.d.ts +0 -9
  49. package/build/plugins/reload-server-webpack-plugin.js +0 -44
package/docs/commands.md CHANGED
@@ -119,7 +119,7 @@ arui-scripts archive-build
119
119
 
120
120
  ### bundle-analyze
121
121
 
122
- Запускает [webpack-bundle-analyzer](https://www.npmjs.com/package/webpack-bundle-analyzer) для анализа размера бандлов.
122
+ Запускает [webpack-bundle-analyzer](https://www.npmjs.com/package/webpack-bundle-analyzer) и [rsdoctor](https://rsdoctor.dev/) для анализа бандла и сборки.
123
123
  Так же при запуске будет генерироваться [stats-файл](https://webpack.js.org/api/stats/), который можно использовать в
124
124
  [сторонних](http://webpack.github.io/analyse/) инструментах, например для понимания почему тот или иной модуль попал в бандл.
125
125
  По умолчанию файл будет писаться в `.build/stats.json`, вы можете поменять это через отдельную [настройку statsOutputFilename](settings.md#statsOutputFilename).
package/docs/settings.md CHANGED
@@ -67,7 +67,7 @@ ARUI_SCRIPTS_CONFIG="{\"clientEntry\":{\"mobile\":\"./src/mobile\",\"desktop\":\
67
67
  Режим отладки, в котором не выполняются некоторые нежелательные операции и выводится больше сообщений об ошибках, по умолчанию `false`.
68
68
 
69
69
  #### devSourceMaps
70
- Какой вид source-map использовать в режиме разработки. По умолчанию `eval`. Эта настройка может сильно влиять на время сборки.
70
+ Какой вид source-map использовать в режиме разработки. По умолчанию `inline-cheap-source-map`. Эта настройка может сильно влиять на время сборки.
71
71
  Подробнее можно почитать [здесь](https://webpack.js.org/configuration/devtool/).
72
72
 
73
73
  :warning: **Внимание**. При использовании любых source-map на основании eval webpack-dev-server будет
@@ -87,7 +87,7 @@ ARUI_SCRIPTS_CONFIG="{\"clientEntry\":{\"mobile\":\"./src/mobile\",\"desktop\":\
87
87
  Пресеты, которые будут использоваться для настройки сборки. См. [пресеты](presets.md).
88
88
 
89
89
  #### proxy
90
- Позволяет настроить проксирование запросов в dev-режиме. По умолчанию `null`. Так же этот параметр можно задать в `package.json`.
90
+ Позволяет настроить проксирование запросов в dev-режиме. По умолчанию `[]`. Так же этот параметр можно задать в `package.json`.
91
91
 
92
92
  В случае, если ваш фронт должен обращаться к API, отличному от вашего nodejs сервера, в **дев режиме** вы можете настроить проксирование запросов.
93
93
 
@@ -97,21 +97,22 @@ ARUI_SCRIPTS_CONFIG="{\"clientEntry\":{\"mobile\":\"./src/mobile\",\"desktop\":\
97
97
  import { PackageSettings } from 'arui-scripts';
98
98
 
99
99
  const settings: PackageSettings = {
100
- proxy: {
101
- '/corp-shared-ui': {
100
+ proxy: [
101
+ {
102
+ context: '/corp-shared-ui',
102
103
  target: 'http://some-other-host',
103
104
  headers: {
104
105
  host: 'some-other-host',
105
106
  },
106
107
  },
107
- }
108
+ ],
108
109
  };
109
110
 
110
111
  export default settings;
111
112
  ```
112
113
 
113
114
  Такая конфигурация будет проксировать запросы к `http://localhost:8080/corp-shared-ui/` на `http://some-other-host/corp-shared-ui`.
114
- Подробнее о конфигурации прокси сервера можно почитать в [документации Webpack](https://webpack.js.org/configuration/dev-server/#devserver-proxy).
115
+ Подробнее о конфигурации прокси сервера можно почитать в [документации rspack](https://rspack.dev/guide/features/dev-server#proxy).
115
116
 
116
117
  :warning: Эта настройка работает только в **дев режиме**.
117
118
 
@@ -212,22 +213,8 @@ const settings = {
212
213
  - `/^react-style-proptype$/`
213
214
  - `/^thrift-services\/proptypes/`
214
215
 
215
- #### useTscLoader
216
- **Deprecated** Используйте настройку [codeLoader](#codeloader)
217
-
218
- Использовать ts-loader вместо babel-loader для обработки ts файлов. **Не рекомендуется к использованию**.
219
-
220
- babel-loader является предпочтительным инструментом сборки, его стоят заменять только если в вашем проекте используется неподдерживаемый им синтаксис:
221
-
222
- - namespaces
223
- - Кастинг типов через `<Type>value`
224
- - enum merging
225
- - legacy import/export (`import = require('module')`, `export = foo`)
226
-
227
- Рекомендуется обновить код проекта до поддерживаемого синтаксиса и использовать babel-loader.
228
-
229
216
  #### codeLoader
230
- Позволяет выбрать какой инструмент использовать для обработки js и ts кода приложения. По умолчанию `babel`.
217
+ Позволяет выбрать какой инструмент использовать для обработки js и ts кода приложения. По умолчанию `swc`.
231
218
 
232
219
  Возможные значения:
233
220
  - `babel` - для всего кода будет использоваться `babel-loader`;
@@ -238,21 +225,11 @@ babel-loader является предпочтительным инструме
238
225
  Использование swc позволяет значительно ускорить сборку (до 2 раз на больших проектах), но не будет создавать полностью идентичный с babel код.
239
226
  Итоговый бандл может получиться немного больше, чем при использовании babel, но разница полностью компенсируется при использовании сжатия.
240
227
 
241
- #### webpack4Compatibility
242
- **Deprecated** Эта настройка будет удалена в будущих версиях скриптов
243
-
244
- Включить ли режим совместимости с webpack 4. По умолчанию `false`. Подробнее можно почитать в этом [issue](https://github.com/webpack/webpack/issues/14580).
245
-
246
228
  #### installServerSourceMaps
247
229
  Добавлять ли в серверную сборку пакет source-map-support. По умолчанию `false`.
248
230
 
249
- #### jestUseTsJest
250
- **Deprecated** Используйте настройку [jestCodeTransformer](#jestcodetransformer)
251
-
252
- Позволяет использовать `ts-jest` вместо `babel-jest` для обработки `ts` файлов при запуске тестов. По умолчанию `false`.
253
-
254
231
  #### jestCodeTransformer
255
- Позволяет выбрать какой инструмент использовать для обработки js и ts кода приложения при запуске тестов. По умолчанию `babel`.
232
+ Позволяет выбрать какой инструмент использовать для обработки js и ts кода приложения при запуске тестов. По умолчанию `swc`.
256
233
 
257
234
  Возможные значения:
258
235
  - `babel` - для всего кода будет использоваться `babel-jest`;
@@ -262,7 +239,7 @@ babel-loader является предпочтительным инструме
262
239
 
263
240
  #### collectCoverage
264
241
  Добавлять ли инструменты для сборки coverage при сборке. По умолчанию определяется по env переменным - будет выставлено в `true` если `NODE_ENV = 'cypress'` или `USE_ISTANBUL = 'enabled'`.
265
- Сбор coverage не будет работать при использовании `useTscLoader=true`.
242
+ Сбор coverage не будет работать при использовании `codeLoader=tsc`.
266
243
 
267
244
  ### Обработка изображений
268
245
  #### dataUrlMaxSize
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arui-scripts",
3
- "version": "18.6.1",
3
+ "version": "19.0.0",
4
4
  "main": "./build/index.js",
5
5
  "typings": "./build/index.d.ts",
6
6
  "license": "MPL-2.0",
@@ -37,7 +37,12 @@
37
37
  "@babel/preset-typescript": "^7.23.3",
38
38
  "@babel/runtime": "^7.23.8",
39
39
  "@pmmmwh/react-refresh-webpack-plugin": "0.5.11",
40
- "@swc/core": "1.7.35",
40
+ "@rsdoctor/rspack-plugin": "0.4.11",
41
+ "@rspack/cli": "1.1.5",
42
+ "@rspack/core": "1.1.5",
43
+ "@rspack/dev-server": "1.0.9",
44
+ "@rspack/plugin-react-refresh": "^1.0.0",
45
+ "@swc/core": "1.10.1",
41
46
  "@swc/jest": "^0.2.36",
42
47
  "assets-webpack-plugin": "7.1.1",
43
48
  "autoprefixer": "^10.3.16",
@@ -92,8 +97,8 @@
92
97
  "react-dev-utils": "12.0.1",
93
98
  "react-refresh": "0.10.0",
94
99
  "react-refresh-typescript": "2.0.2",
95
- "reload-server-webpack-plugin": "1.0.1",
96
100
  "rimraf": "^2.7.1",
101
+ "rspack-manifest-plugin": "5.0.1",
97
102
  "run-script-webpack-plugin": "0.0.11",
98
103
  "semver": "^7.5.4",
99
104
  "shelljs": "0.8.5",
@@ -106,11 +111,8 @@
106
111
  "ts-jest": "28.0.8",
107
112
  "ts-loader": "9.4.4",
108
113
  "ts-node": "9.1.1",
109
- "tsconfig-paths-webpack-plugin": "3.5.1",
110
- "webpack": "^5.95.0",
111
114
  "webpack-bundle-analyzer": "4.10.2",
112
115
  "webpack-deduplication-plugin": "^0.0.8",
113
- "webpack-dev-server": "4.15.2",
114
116
  "webpack-manifest-plugin": "3.2.0",
115
117
  "webpack-node-externals": "3.0.0"
116
118
  },
@@ -1,9 +0,0 @@
1
- export = ReloadServerPlugin;
2
- declare class ReloadServerPlugin {
3
- constructor({ script }?: {
4
- script: string;
5
- });
6
- done: any;
7
- workers: any[];
8
- apply(compiler: any): void;
9
- }
@@ -1,44 +0,0 @@
1
- "use strict";
2
- // TODO: remove eslint-disable
3
- /* eslint-disable @typescript-eslint/no-var-requires */
4
- const cluster = require('cluster');
5
- const path = require('path');
6
- const defaultOptions = {
7
- script: 'server.js',
8
- };
9
- module.exports = class ReloadServerPlugin {
10
- constructor({ script } = defaultOptions) {
11
- this.done = null;
12
- this.workers = [];
13
- cluster.setupMaster({
14
- exec: path.resolve(process.cwd(), script),
15
- });
16
- cluster.on('online', (worker) => {
17
- this.workers.push(worker);
18
- if (this.done) {
19
- this.done();
20
- }
21
- });
22
- }
23
- apply(compiler) {
24
- const afterEmit = (compilation, callback) => {
25
- this.done = callback;
26
- this.workers.forEach((worker) => {
27
- try {
28
- process.kill(worker.process.pid, 'SIGTERM');
29
- }
30
- catch (e) {
31
- console.warn(`Unable to kill process #${worker.process.pid}`);
32
- }
33
- });
34
- this.workers = [];
35
- cluster.fork();
36
- };
37
- if (compiler.hooks) {
38
- compiler.hooks.afterEmit.tapAsync('ReloadServerPlugin', afterEmit);
39
- }
40
- else {
41
- compiler.plugin('after-emit', afterEmit);
42
- }
43
- }
44
- };