arui-scripts 17.4.0 → 18.1.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 (55) hide show
  1. package/.eslintrc.js +2 -0
  2. package/.turbo/turbo-lint.log +27 -105
  3. package/.turbo/turbo-test.log +7 -4
  4. package/CHANGELOG.md +33 -0
  5. package/build/commands/changelog/index.js +22 -27
  6. package/build/commands/start/print-compiler-output.js +1 -1
  7. package/build/commands/start-prod/index.js +1 -1
  8. package/build/commands/util/client-assets-sizes.js +2 -3
  9. package/build/commands/util/docker-build.js +6 -7
  10. package/build/commands/util/run-client-dev-server.js +1 -2
  11. package/build/commands/util/run-compilers.js +1 -2
  12. package/build/commands/util/run-server-watch-compiler.js +2 -3
  13. package/build/commands/util/tsc.js +1 -2
  14. package/build/commands/util/yarn.js +3 -4
  15. package/build/configs/app-configs/calculate-dependent-config.d.ts +1 -75
  16. package/build/configs/app-configs/calculate-dependent-config.js +3 -4
  17. package/build/configs/app-configs/get-defaults.js +5 -4
  18. package/build/configs/app-configs/read-config-file.js +2 -3
  19. package/build/configs/app-configs/types.d.ts +13 -2
  20. package/build/configs/app-configs/update-with-config-file.js +1 -2
  21. package/build/configs/app-configs/update-with-env.js +1 -2
  22. package/build/configs/app-configs/update-with-package.js +1 -2
  23. package/build/configs/app-configs/update-with-presets.js +2 -3
  24. package/build/configs/app-configs/validate-settings-keys.js +1 -2
  25. package/build/configs/app-configs/warn-about-deprecations.js +4 -3
  26. package/build/configs/client-env-config/add-env-to-html-template.js +1 -2
  27. package/build/configs/client-env-config/get-env-config.js +2 -3
  28. package/build/configs/jest/index.d.ts +3 -3
  29. package/build/configs/jest/settings.d.ts +11 -11
  30. package/build/configs/jest/settings.js +29 -13
  31. package/build/configs/modules.js +20 -12
  32. package/build/configs/postcss.config.js +2 -2
  33. package/build/configs/process-assets-plugin-output.js +1 -2
  34. package/build/configs/swc.d.ts +4 -0
  35. package/build/configs/swc.js +35 -0
  36. package/build/configs/util/apply-overrides.d.ts +5 -0
  37. package/build/configs/util/find-loader.js +1 -2
  38. package/build/configs/util/find-plugin.d.ts +0 -1
  39. package/build/configs/util/find-plugin.js +1 -2
  40. package/build/configs/util/get-polyfills.d.ts +0 -1
  41. package/build/configs/util/get-polyfills.js +1 -2
  42. package/build/configs/util/get-webpack-cache-dependencies.js +1 -2
  43. package/build/configs/util/resolve.js +2 -3
  44. package/build/configs/webpack.client.d.ts +2 -2
  45. package/build/configs/webpack.client.js +84 -61
  46. package/build/configs/webpack.server.d.ts +1 -1
  47. package/build/configs/webpack.server.js +70 -46
  48. package/build/plugins/arui-runtime/arui-runtime-module.js +1 -1
  49. package/build/plugins/arui-runtime/index.js +2 -2
  50. package/build/templates/dockerfile.template.js +1 -1
  51. package/build/tsconfig-local.tsbuildinfo +1 -1
  52. package/docs/modules.md +25 -3
  53. package/docs/overrides.md +3 -0
  54. package/docs/settings.md +27 -0
  55. package/package.json +15 -10
package/docs/modules.md CHANGED
@@ -338,10 +338,10 @@ export const MyAwesomeComponent = () => {
338
338
  трудоемкой задачей, особенно если у вас уже есть большая кодовая база.
339
339
 
340
340
  arui-scripts предоставляет два решения для этой проблемы:
341
- - _compat_ модули
341
+ - _css-prefix_
342
342
  - использование shadow dom
343
343
 
344
- ## compat модули
344
+ ## css-prefix
345
345
 
346
346
  Суть метода заключается в том, что ко всем стилям модуля будет добавляться префикс, который позволит изолировать
347
347
  стили модуля от стилей приложения-потребителя.
@@ -354,7 +354,7 @@ arui-scripts предоставляет два решения для этой п
354
354
  1. Изменить конфигурацию модуля в `arui-scripts.config.ts`:
355
355
 
356
356
  ```ts
357
- // ./arui-scripts.config.ts
357
+ // ./arui-scripts.config.ts compatModules
358
358
  import type { PackageSettings } from 'arui-scripts';
359
359
 
360
360
  const aruiScriptsConfig: PackageSettings = {
@@ -384,6 +384,28 @@ const aruiScriptsConfig: PackageSettings = {
384
384
  export default aruiScriptsConfig;
385
385
  ```
386
386
 
387
+ ```ts
388
+ // ./arui-scripts.config.ts module federation
389
+ import type { PackageSettings } from 'arui-scripts';
390
+
391
+ const aruiScriptsConfig: PackageSettings = {
392
+ modules: {
393
+ shared: {
394
+ 'react': '^17.0.0',
395
+ 'react-dom': '^17.0.0',
396
+ },
397
+ exposes: {
398
+ 'Module': './src/modules/module/index',
399
+ },
400
+ options: {
401
+ cssPrefix: '.my-module'
402
+ }
403
+ }
404
+ }
405
+
406
+ export default aruiScriptsConfig;
407
+ ```
408
+
387
409
  2. Изменить входную точку модуля:
388
410
 
389
411
  ```tsx
package/docs/overrides.md CHANGED
@@ -72,6 +72,9 @@ export default overrides;
72
72
  - `start.sh` - шаблон entrypoint докер контейнера. Базовый шаблон [тут](../src/templates/start.template.ts).
73
73
  - `serverExternalsExemptions` - список модулей, которые не будут добавлены в список внешних зависимостей сервера. [Подробнее](caveats.md#node-externals).
74
74
  - `html` - шаблон для htmlWebpackPlugin, будет использоваться только в режиме [`clientOnly`](./settings.md#clientonly).
75
+ - `swc-client` - конфигурация `swc` для клиентского кода. Ключи: `swc`, `swcClient`.
76
+ - `swc-server` - конфигурация `swc` для серверного кода. Ключи: `swc`, `swcServer`.
77
+ - `swc-jest` - конфигурация `swc` для тестов. Ключи: `swc`, `swcJest`.
75
78
 
76
79
  Для некоторых конфигураций определены несколько ключей, они будут применяться в том порядке, в котором они приведены в этом файле.
77
80
 
package/docs/settings.md CHANGED
@@ -197,6 +197,8 @@ const settings = {
197
197
  - `/^thrift-services\/proptypes/`
198
198
 
199
199
  #### useTscLoader
200
+ **Deprecated** Используйте настройку [codeLoader](#codeloader)
201
+
200
202
  Использовать ts-loader вместо babel-loader для обработки ts файлов. **Не рекомендуется к использованию**.
201
203
 
202
204
  babel-loader является предпочтительным инструментом сборки, его стоят заменять только если в вашем проекте используется неподдерживаемый им синтаксис:
@@ -208,15 +210,40 @@ babel-loader является предпочтительным инструме
208
210
 
209
211
  Рекомендуется обновить код проекта до поддерживаемого синтаксиса и использовать babel-loader.
210
212
 
213
+ #### codeLoader
214
+ Позволяет выбрать какой инструмент использовать для обработки js и ts кода приложения. По умолчанию `babel`.
215
+
216
+ Возможные значения:
217
+ - `babel` - для всего кода будет использоваться `babel-loader`;
218
+ - `tsc` - для ts кода будет использоваться `ts-loader`, для всего остального - `babel-loader`;
219
+ - `swc` - для всего кода будет использоваться `swc-loader`.
220
+
221
+ `swc` является предпочтительным режимом, дефолты не меняются для сохранения обратной совместимости.
222
+ Использование swc позволяет значительно ускорить сборку (до 2 раз на больших проектах), но не будет создавать полностью идентичный с babel код.
223
+ Итоговый бандл может получиться немного больше, чем при использовании babel, но разница полностью компенсируется при использовании сжатия.
224
+
211
225
  #### webpack4Compatibility
226
+ **Deprecated** Эта настройка будет удалена в будущих версиях скриптов
227
+
212
228
  Включить ли режим совместимости с webpack 4. По умолчанию `false`. Подробнее можно почитать в этом [issue](https://github.com/webpack/webpack/issues/14580).
213
229
 
214
230
  #### installServerSourceMaps
215
231
  Добавлять ли в серверную сборку пакет source-map-support. По умолчанию `false`.
216
232
 
217
233
  #### jestUseTsJest
234
+ **Deprecated** Используйте настройку [jestCodeTransformer](#jestcodetransformer)
235
+
218
236
  Позволяет использовать `ts-jest` вместо `babel-jest` для обработки `ts` файлов при запуске тестов. По умолчанию `false`.
219
237
 
238
+ #### jestCodeTransformer
239
+ Позволяет выбрать какой инструмент использовать для обработки js и ts кода приложения при запуске тестов. По умолчанию `babel`.
240
+
241
+ Возможные значения:
242
+ - `babel` - для всего кода будет использоваться `babel-jest`;
243
+ - `tsc` - для ts кода будет использоваться `ts-jest`, для всего остального - `babel-jest`;
244
+ - `swc` - для всего кода будет использоваться `@swc/jest`.
245
+ Swc более строго следует спецификациям и [не дает возможности](https://github.com/swc-project/swc/issues/5059) делать `spyOn` для экспортов из esm модулей.
246
+
220
247
  #### collectCoverage
221
248
  Добавлять ли инструменты для сборки coverage при сборке. По умолчанию определяется по env переменным - будет выставлено в `true` если `NODE_ENV = 'cypress'` или `USE_ISTANBUL = 'enabled'`.
222
249
  Сбор coverage не будет работать при использовании `useTscLoader=true`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arui-scripts",
3
- "version": "17.4.0",
3
+ "version": "18.1.0",
4
4
  "main": "./build/index.js",
5
5
  "typings": "./build/index.d.ts",
6
6
  "license": "MPL-2.0",
@@ -38,11 +38,13 @@
38
38
  "@babel/runtime": "^7.23.8",
39
39
  "@csstools/postcss-global-data": "^2.0.1",
40
40
  "@pmmmwh/react-refresh-webpack-plugin": "0.5.11",
41
+ "@swc/core": "^1.7.35",
42
+ "@swc/jest": "^0.2.36",
41
43
  "assets-webpack-plugin": "7.1.1",
42
44
  "autoprefixer": "^10.3.16",
43
45
  "babel-core": "^7.0.0-bridge.0",
44
46
  "babel-jest": "28.1.3",
45
- "babel-loader": "9.1.3",
47
+ "babel-loader": "9.2.1",
46
48
  "babel-plugin-istanbul": "^7.0.0",
47
49
  "babel-plugin-transform-react-remove-prop-types": "0.4.24",
48
50
  "case-sensitive-paths-webpack-plugin": "2.4.0",
@@ -96,16 +98,18 @@
96
98
  "shelljs": "0.8.5",
97
99
  "strip-ansi": "6.0.1",
98
100
  "style-loader": "3.3.3",
101
+ "swc-loader": "^0.2.6",
102
+ "swc-plugin-coverage-instrument": "^0.0.24",
99
103
  "tar": "6.2.1",
100
104
  "terser-webpack-plugin": "5.3.9",
101
105
  "ts-jest": "28.0.8",
102
106
  "ts-loader": "9.4.4",
103
107
  "ts-node": "9.1.1",
104
108
  "tsconfig-paths-webpack-plugin": "3.5.1",
105
- "webpack": "^5.88.2",
106
- "webpack-bundle-analyzer": "4.9.0",
109
+ "webpack": "^5.95.0",
110
+ "webpack-bundle-analyzer": "4.10.2",
107
111
  "webpack-deduplication-plugin": "^0.0.8",
108
- "webpack-dev-server": "4.15.1",
112
+ "webpack-dev-server": "4.15.2",
109
113
  "webpack-manifest-plugin": "3.2.0",
110
114
  "webpack-node-externals": "3.0.0"
111
115
  },
@@ -122,17 +126,17 @@
122
126
  "@types/shelljs": "^0.8.12",
123
127
  "@types/start-server-webpack-plugin": "2.2.2",
124
128
  "@types/tar": "^4.0.5",
125
- "@types/webpack": "^5.28.1",
126
- "@types/webpack-bundle-analyzer": "4.6.0",
129
+ "@types/webpack": "^5.28.5",
130
+ "@types/webpack-bundle-analyzer": "4.7.0",
127
131
  "@types/webpack-dev-server": "^4.7.1",
128
132
  "@types/webpack-manifest-plugin": "3.0.5",
129
133
  "@types/webpack-node-externals": "^3.0.0",
130
134
  "eslint": "^8.20.0",
131
- "eslint-config-custom": "file:../eslint-config-custom",
135
+ "eslint-config-custom": "workspace:*",
132
136
  "prettier": "^2.7.1",
133
137
  "stylelint": "^14.9.1",
134
138
  "type-fest": "2.19.0",
135
- "typescript": "4.9.5"
139
+ "typescript": "5.6.3"
136
140
  },
137
141
  "optionalDependencies": {
138
142
  "brotli-size": "^4.0.0"
@@ -147,7 +151,8 @@
147
151
  "lint:scripts": "eslint \"**/*.{js,jsx,ts,tsx}\" --ext .js,.jsx,.ts,.tsx",
148
152
  "lint": "yarn lint:css && yarn lint:scripts",
149
153
  "lint:fix": "yarn lint:css --fix && yarn lint:scripts --fix",
150
- "format": "prettier --write $INIT_CWD/{config,src}/**/*.{ts,tsx,js,jsx,css}"
154
+ "format": "prettier --write $INIT_CWD/{config,src}/**/*.{ts,tsx,js,jsx,css}",
155
+ "audit": "yarn npm audit --severity high --environment production"
151
156
  },
152
157
  "peerDependencies": {
153
158
  "imagemin-gifsicle": "^7.0.0",