arui-scripts 15.3.0 → 15.4.1

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 (51) hide show
  1. package/.turbo/turbo-build.log +0 -0
  2. package/.turbo/turbo-test.log +91 -0
  3. package/CHANGELOG.md +278 -656
  4. package/README.md +31 -2
  5. package/bin/build.sh +2 -1
  6. package/build/commands/build/build-wrapper.d.ts +2 -2
  7. package/build/commands/build/client.js +3 -3
  8. package/build/commands/bundle-analyze/index.js +15 -15
  9. package/build/commands/changelog/index.js +2 -2
  10. package/build/commands/util/make-tmp-dir.d.ts +1 -1
  11. package/build/commands/util/make-tmp-dir.js +2 -2
  12. package/build/commands/util/run-client-dev-server.d.ts +1 -1
  13. package/build/commands/util/run-client-dev-server.js +1 -4
  14. package/build/configs/app-configs/calculate-dependent-config.d.ts +54 -8
  15. package/build/configs/app-configs/calculate-dependent-config.js +11 -13
  16. package/build/configs/app-configs/get-defaults.d.ts +3 -2
  17. package/build/configs/app-configs/get-defaults.js +75 -55
  18. package/build/configs/app-configs/index.d.ts +5 -3
  19. package/build/configs/app-configs/index.js +13 -7
  20. package/build/configs/app-configs/types.d.ts +51 -38
  21. package/build/configs/app-configs/update-with-config-file.d.ts +2 -2
  22. package/build/configs/app-configs/update-with-config-file.js +5 -7
  23. package/build/configs/app-configs/update-with-env.js +3 -8
  24. package/build/configs/app-configs/update-with-package.d.ts +2 -2
  25. package/build/configs/app-configs/update-with-package.js +5 -10
  26. package/build/configs/app-configs/update-with-presets.d.ts +2 -2
  27. package/build/configs/app-configs/update-with-presets.js +8 -15
  28. package/build/configs/app-configs/validate-settings-keys.d.ts +2 -5
  29. package/build/configs/app-configs/validate-settings-keys.js +6 -7
  30. package/build/configs/babel-client.d.ts +33 -1
  31. package/build/configs/babel-dependencies.d.ts +14 -1
  32. package/build/configs/babel-server.d.ts +26 -1
  33. package/build/configs/dev-server.d.ts +15 -1
  34. package/build/configs/jest/index.d.ts +33 -1
  35. package/build/configs/postcss.config.d.ts +1 -1
  36. package/build/configs/postcss.d.ts +1 -1
  37. package/build/configs/process-assets-plugin-output.d.ts +2 -0
  38. package/build/configs/process-assets-plugin-output.js +32 -0
  39. package/build/configs/server-externals-exemptions.d.ts +1 -1
  40. package/build/configs/util/apply-overrides.d.ts +23 -7
  41. package/build/configs/util/apply-overrides.js +3 -2
  42. package/build/configs/util/get-entry.d.ts +2 -1
  43. package/build/configs/webpack.client.d.ts +10 -2
  44. package/build/configs/webpack.client.dev.js +1 -1
  45. package/build/configs/webpack.client.js +51 -37
  46. package/build/configs/webpack.client.prod.js +1 -1
  47. package/build/index.d.ts +1 -1
  48. package/build/tsconfig-local.tsbuildinfo +1 -1
  49. package/package.json +4 -4
  50. package/build/configs/app-configs/available-package-settings.d.ts +0 -8
  51. package/build/configs/app-configs/available-package-settings.js +0 -34
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createClientWebpackConfig = void 0;
6
+ exports.createClientWebpackConfig = exports.createSingleClientWebpackConfig = void 0;
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const webpack_1 = __importDefault(require("webpack"));
9
9
  const webpack_manifest_plugin_1 = require("webpack-manifest-plugin");
@@ -14,7 +14,6 @@ const compression_webpack_plugin_1 = __importDefault(require("compression-webpac
14
14
  const assets_webpack_plugin_1 = __importDefault(require("assets-webpack-plugin"));
15
15
  const tsconfig_paths_webpack_plugin_1 = __importDefault(require("tsconfig-paths-webpack-plugin"));
16
16
  const getCSSModuleLocalIdent_1 = __importDefault(require("react-dev-utils/getCSSModuleLocalIdent"));
17
- const PnpWebpackPlugin = require('pnp-webpack-plugin');
18
17
  const get_entry_1 = __importDefault(require("./util/get-entry"));
19
18
  const app_configs_1 = __importDefault(require("./app-configs"));
20
19
  const babel_client_1 = __importDefault(require("./babel-client"));
@@ -27,38 +26,50 @@ const case_sensitive_paths_webpack_plugin_1 = __importDefault(require("case-sens
27
26
  const webpack_deduplication_plugin_1 = require("webpack-deduplication-plugin");
28
27
  const minimizers_1 = require("./config-extras/minimizers");
29
28
  const mini_svg_data_uri_1 = __importDefault(require("mini-svg-data-uri"));
29
+ const process_assets_plugin_output_1 = require("./process-assets-plugin-output");
30
+ const PnpWebpackPlugin = require('pnp-webpack-plugin');
30
31
  const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
31
32
  const noopPath = require.resolve('./util/noop');
32
33
  function getSingleEntry(entryPoint, mode) {
33
34
  return [
34
35
  ...(Array.isArray(app_configs_1.default.clientPolyfillsEntry) ? app_configs_1.default.clientPolyfillsEntry : [app_configs_1.default.clientPolyfillsEntry]),
35
- mode === 'dev' ? require.resolve('webpack/hot/dev-server') : false,
36
36
  ...entryPoint
37
37
  ].filter(Boolean);
38
38
  }
39
- // This is the production configuration.
40
- const createClientWebpackConfig = (mode) => ({
41
- target: 'web',
42
- mode: mode === 'dev' ? 'development' : 'production',
43
- devtool: mode === 'dev' ? app_configs_1.default.devSourceMaps : 'source-map',
44
- entry: (0, get_entry_1.default)(app_configs_1.default.clientEntry, getSingleEntry, mode),
39
+ // Нам важно шарить assets plugin между разными сборками, чтобы файл не перезаписывался
40
+ const assetsPlugin = new assets_webpack_plugin_1.default({
41
+ path: app_configs_1.default.serverOutputPath,
42
+ processOutput: process_assets_plugin_output_1.processAssetsPluginOutput,
43
+ });
44
+ // Этот плагин нужен для того, чтобы клиентский код так же могу получить информацию о сборке.
45
+ // Это позволяет нам использовать данные о сборки на клиенте.
46
+ const clientAssetsPlugin = new assets_webpack_plugin_1.default({
47
+ path: app_configs_1.default.clientOutputPath,
48
+ processOutput: process_assets_plugin_output_1.processAssetsPluginOutput,
49
+ });
50
+ /**
51
+ * Создает конфигурацию для сборки клиентского кода. Может быть использована для создания дополнительных конфигураций.
52
+ * @param mode Режим сборки (dev или prod)
53
+ * @param entry Точка входа, любой валидный вход для webpack
54
+ * @param configName Имя конфигурации, если не указано, то используется имя по умолчанию
55
+ */
56
+ const createSingleClientWebpackConfig = (mode, entry, configName) => (Object.assign(Object.assign({}, (configName ? { name: configName } : {})), { target: 'web', mode: mode === 'dev' ? 'development' : 'production', devtool: mode === 'dev' ? app_configs_1.default.devSourceMaps : 'source-map', entry: (0, get_entry_1.default)(entry, getSingleEntry, mode),
45
57
  // in production mode we need to fail on first error
46
- bail: mode === 'prod',
47
- context: app_configs_1.default.cwd,
48
- output: {
58
+ bail: mode === 'prod', context: app_configs_1.default.cwd, output: {
49
59
  assetModuleFilename: 'static/media/[name].[hash:8][ext]',
50
60
  // Add /* filename */ comments to generated require()s in the output.
51
61
  pathinfo: mode === 'dev',
52
62
  path: app_configs_1.default.clientOutputPath,
53
63
  publicPath: app_configs_1.default.publicPath,
54
64
  filename: mode === 'dev' ? '[name].js' : '[name].[chunkhash:8].js',
55
- chunkFilename: mode === 'dev' ? '[name].js' : '[name].[chunkhash:8].chunk.js',
65
+ chunkFilename: mode === 'dev'
66
+ ? `${configName ? `${configName}-` : ''}[name].js`
67
+ : `${configName ? `${configName}-` : ''}[name].[chunkhash:8].chunk.js`,
56
68
  // Point sourcemap entries to original disk location (format as URL on Windows)
57
69
  devtoolModuleFilenameTemplate: (info) => path_1.default
58
70
  .relative(app_configs_1.default.appSrc, info.absoluteResourcePath)
59
71
  .replace(/\\/g, '/'),
60
- },
61
- optimization: {
72
+ }, optimization: {
62
73
  splitChunks: mode === 'prod'
63
74
  ? {
64
75
  chunks: "all",
@@ -72,7 +83,14 @@ const createClientWebpackConfig = (mode) => ({
72
83
  vendor: {
73
84
  test: /node_modules/,
74
85
  chunks: "initial",
75
- name: "vendor",
86
+ name: (_, chunks, cacheGroupKey) => {
87
+ if (!configName) {
88
+ return 'vendor';
89
+ }
90
+ // Нам нужно сделать так, чтобы у разных конфигураций были разные имена чанков
91
+ const allChunksNames = chunks.map((item) => item.name).join('~');
92
+ return `${cacheGroupKey}-${allChunksNames}`;
93
+ },
76
94
  priority: 10,
77
95
  enforce: true
78
96
  }
@@ -127,8 +145,7 @@ const createClientWebpackConfig = (mode) => ({
127
145
  // Оптимизации времени билда, см https://webpack.js.org/guides/build-performance/
128
146
  removeAvailableModules: mode !== 'dev',
129
147
  removeEmptyChunks: mode !== 'dev',
130
- },
131
- resolve: {
148
+ }, resolve: {
132
149
  // This allows you to set a fallback for where Webpack should look for modules.
133
150
  // We placed these paths second because we want `node_modules` to "win"
134
151
  // if there are any conflicts. This matches Node resolution mechanism.
@@ -147,21 +164,18 @@ const createClientWebpackConfig = (mode) => ({
147
164
  extensions: ['.web.js', '.mjs', '.js', '.json', '.web.jsx', '.jsx', '.ts', '.tsx']
148
165
  })),
149
166
  ].filter(Boolean)),
150
- },
151
- resolveLoader: {
167
+ }, resolveLoader: {
152
168
  plugins: [
153
169
  PnpWebpackPlugin.moduleLoader(module),
154
170
  ],
155
- },
156
- cache: mode === 'dev'
171
+ }, cache: mode === 'dev'
157
172
  ? {
158
173
  type: 'filesystem',
159
174
  buildDependencies: {
160
175
  config: [__filename],
161
176
  },
162
177
  }
163
- : false,
164
- module: {
178
+ : false, module: {
165
179
  // typescript interface will be removed from modules, and we will get an error on correct code
166
180
  // see https://github.com/webpack/webpack/issues/7378
167
181
  strictExportPresence: !app_configs_1.default.tsconfig,
@@ -294,9 +308,9 @@ const createClientWebpackConfig = (mode) => ({
294
308
  // ** STOP ** Are you adding a new loader?
295
309
  // Make sure to add the new loader(s) before asset modules
296
310
  ],
297
- },
298
- plugins: ([
299
- new assets_webpack_plugin_1.default({ path: app_configs_1.default.serverOutputPath }),
311
+ }, plugins: ([
312
+ assetsPlugin,
313
+ clientAssetsPlugin,
300
314
  new webpack_1.default.DefinePlugin(Object.assign({
301
315
  // Tell Webpack to provide empty mocks for process.env.
302
316
  'process.env': '{}' }, (mode === 'dev'
@@ -354,20 +368,20 @@ const createClientWebpackConfig = (mode) => ({
354
368
  // This should works fine, since proptypes usage should be eliminated in production mode
355
369
  mode === 'prod' && !app_configs_1.default.keepPropTypes && new webpack_1.default.NormalModuleReplacementPlugin(/^react-style-proptype$/, noopPath),
356
370
  mode === 'prod' && !app_configs_1.default.keepPropTypes && new webpack_1.default.NormalModuleReplacementPlugin(/^thrift-services\/proptypes/, noopPath)
357
- ].filter(Boolean)),
358
- experiments: {
371
+ ].filter(Boolean)), experiments: {
359
372
  backCompat: app_configs_1.default.webpack4Compatibility,
360
- },
373
+ },
361
374
  // Без этого комиляция трирегилась на изменение в node_modules и приводила к утечке памяти
362
375
  watchOptions: {
363
376
  ignored: new RegExp(app_configs_1.default.watchIgnorePath.join('|')),
364
377
  aggregateTimeout: 100,
365
- },
366
- // Turn off performance hints during development because we don't do any
367
- // splitting or minification in interest of speed. These warnings become
368
- // cumbersome.
378
+ },
379
+ // Выключаем performance hints, т.к. размеры бандлов контролируются не в рамках arui-scripts
369
380
  performance: {
370
- hints: mode === 'dev' ? false : 'warning',
371
- },
372
- });
381
+ hints: false,
382
+ } }));
383
+ exports.createSingleClientWebpackConfig = createSingleClientWebpackConfig;
384
+ const createClientWebpackConfig = (mode) => {
385
+ return (0, exports.createSingleClientWebpackConfig)(mode, app_configs_1.default.clientEntry);
386
+ };
373
387
  exports.createClientWebpackConfig = createClientWebpackConfig;
@@ -5,5 +5,5 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const apply_overrides_1 = __importDefault(require("./util/apply-overrides"));
7
7
  const webpack_client_1 = require("./webpack.client");
8
- const config = (0, apply_overrides_1.default)(['webpack', 'webpackClient', 'webpackProd', 'webpackClientProd'], (0, webpack_client_1.createClientWebpackConfig)('prod'));
8
+ const config = (0, apply_overrides_1.default)(['webpack', 'webpackClient', 'webpackProd', 'webpackClientProd'], (0, webpack_client_1.createClientWebpackConfig)('prod'), { createSingleClientWebpackConfig: webpack_client_1.createSingleClientWebpackConfig.bind(null, 'prod') });
9
9
  exports.default = config;
package/build/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export type { OverrideFile } from './configs/util/apply-overrides';
2
- export type { PackageSettings } from './configs/app-configs/available-package-settings';
2
+ export type { AppConfigs, PackageSettings } from './configs/app-configs/types';
3
3
  export { prepareFilesForDocker } from './commands/util/docker-build';
4
4
  export { getBuildParamsFromArgs } from './commands/util/docker-build';
5
5
  export { getDockerBuildCommand } from './commands/util/docker-build';