arui-scripts 18.0.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 (54) hide show
  1. package/.eslintrc.js +2 -0
  2. package/.turbo/turbo-lint.log +25 -102
  3. package/.turbo/turbo-test.log +7 -4
  4. package/CHANGELOG.md +23 -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 +8 -0
  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 +6 -6
  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/overrides.md +3 -0
  53. package/docs/settings.md +27 -0
  54. package/package.json +15 -10
@@ -36,6 +36,7 @@ const client_env_config_1 = require("./client-env-config");
36
36
  const modules_1 = require("./modules");
37
37
  const postcss_1 = __importDefault(require("./postcss"));
38
38
  const process_assets_plugin_output_1 = require("./process-assets-plugin-output");
39
+ const swc_1 = require("./swc");
39
40
  const PnpWebpackPlugin = require('pnp-webpack-plugin');
40
41
  const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
41
42
  const noopPath = require.resolve('./util/noop');
@@ -156,7 +157,7 @@ const createSingleClientWebpackConfig = (mode, entry, configName) => (Object.ass
156
157
  commons: {
157
158
  chunks: 'initial',
158
159
  minChunks: 2,
159
- maxInitialRequests: 5,
160
+ maxInitialRequests: 5, // The default limit is too small to showcase the effect
160
161
  minSize: 0, // This is example is too small to create commons chunks
161
162
  },
162
163
  vendor: {
@@ -223,64 +224,12 @@ const createSingleClientWebpackConfig = (mode, entry, configName) => (Object.ass
223
224
  // match the requirements. When no loader matches it will fall
224
225
  // back to the "file" loader at the end of the loader list.
225
226
  oneOf: [
226
- // Process JS with Babel.
227
- {
228
- test: app_configs_1.configs.useTscLoader
229
- ? /\.(js|jsx|mjs|cjs)$/
230
- : /\.(js|jsx|mjs|ts|tsx|cjs)$/,
231
- include: app_configs_1.configs.appSrc,
232
- loader: require.resolve('babel-loader'),
233
- options: Object.assign(Object.assign({}, babel_client_1.default), { cacheDirectory: mode === 'dev', cacheCompression: false, plugins: [
234
- ...babel_client_1.default.plugins,
235
- mode === 'dev'
236
- ? [
237
- require.resolve('react-refresh/babel'),
238
- { skipEnvCheck: true },
239
- ]
240
- : undefined,
241
- ].filter(Boolean) }),
242
- },
243
- app_configs_1.configs.tsconfig &&
244
- app_configs_1.configs.useTscLoader && {
245
- test: /\.tsx?$/,
246
- use: [
247
- {
248
- loader: require.resolve('babel-loader'),
249
- options: Object.assign({ cacheDirectory: mode === 'dev', cacheCompression: false,
250
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
251
- // @ts-ignore
252
- plugins: mode === 'dev'
253
- ? [
254
- require.resolve('react-refresh/babel'),
255
- { skipEnvCheck: true },
256
- ]
257
- : undefined }, babel_client_1.default),
258
- },
259
- {
260
- loader: require.resolve('ts-loader'),
261
- options: {
262
- getCustomTransformers: () => ({
263
- before: mode === 'dev' ? [(0, react_refresh_typescript_1.default)()] : [],
264
- }),
265
- onlyCompileBundledFiles: true,
266
- transpileOnly: true,
267
- happyPackMode: true,
268
- configFile: app_configs_1.configs.tsconfig,
269
- },
270
- },
271
- ],
272
- },
273
- // Process any JS outside of the app with Babel.
274
- // Unlike the application JS, we only compile the standard ES features.
275
- {
276
- test: /\.(js|mjs)$/,
277
- exclude: /@babel(?:\/|\\{1,2})runtime/,
278
- loader: require.resolve('babel-loader'),
279
- resolve: {
280
- fullySpecified: false,
281
- },
282
- options: Object.assign(Object.assign({}, babel_dependencies_1.babelDependencies), { babelrc: false, configFile: false, compact: false, cacheDirectory: mode === 'dev', cacheCompression: false }),
283
- },
227
+ // Обработка основного кода приложения
228
+ getCodeLoader(mode),
229
+ // обработка ts кода если codeLoader = tsc
230
+ getTsLoaderIfEnabled(mode),
231
+ // Обработка внешнего для приложения кода (node_modules)
232
+ getExternalCodeLoader(mode),
284
233
  // process simple css files with postcss loader and css loader
285
234
  {
286
235
  test: /\.css$/,
@@ -384,7 +333,7 @@ const createSingleClientWebpackConfig = (mode, entry, configName) => (Object.ass
384
333
  })()),
385
334
  (mode === 'prod' || !app_configs_1.configs.disableDevWebpackTypecheck) &&
386
335
  app_configs_1.configs.tsconfig !== null &&
387
- !app_configs_1.configs.useTscLoader &&
336
+ app_configs_1.configs.codeLoader !== 'tsc' &&
388
337
  new fork_ts_checker_webpack_plugin_1.default(),
389
338
  // moment.js очень большая библиотека, которая включает в себя массу локализаций, которые мы не используем.
390
339
  // Поэтому мы их просто игнорируем, чтобы не включать в сборку.
@@ -417,7 +366,7 @@ const createSingleClientWebpackConfig = (mode, entry, configName) => (Object.ass
417
366
  new html_webpack_plugin_1.default({
418
367
  templateContent: mode === 'dev'
419
368
  ? (0, client_env_config_1.addEnvToHtmlTemplate)(html_template_1.htmlTemplate)
420
- : html_template_1.htmlTemplate,
369
+ : html_template_1.htmlTemplate, // оставляем env шаблоны как есть для прод сборки - их будет менять start.sh
421
370
  filename: '../index.html',
422
371
  }),
423
372
  mode === 'dev' && app_configs_1.configs.clientOnly && new client_env_config_1.ClientConfigPlugin(),
@@ -482,3 +431,77 @@ const createClientWebpackConfig = (mode) => {
482
431
  return [appWebpackConfig, ...modulesWebpackConfigs];
483
432
  };
484
433
  exports.createClientWebpackConfig = createClientWebpackConfig;
434
+ function getCodeLoader(mode) {
435
+ var _a, _b, _c;
436
+ if (app_configs_1.configs.codeLoader === 'swc') {
437
+ return {
438
+ test: /\.(js|jsx|mjs|ts|tsx|cjs)$/,
439
+ include: app_configs_1.configs.appSrc,
440
+ loader: require.resolve('swc-loader'),
441
+ options: Object.assign(Object.assign({ cacheDirectory: mode === 'dev', cacheCompression: false }, swc_1.swcClientConfig), { jsc: Object.assign(Object.assign({}, swc_1.swcClientConfig.jsc), { transform: Object.assign(Object.assign({}, (_a = swc_1.swcClientConfig.jsc) === null || _a === void 0 ? void 0 : _a.transform), { react: Object.assign(Object.assign({}, (_c = (_b = swc_1.swcClientConfig.jsc) === null || _b === void 0 ? void 0 : _b.transform) === null || _c === void 0 ? void 0 : _c.react), { refresh: mode === 'dev' }) }) }) }),
442
+ };
443
+ }
444
+ return {
445
+ test: app_configs_1.configs.codeLoader === 'tsc'
446
+ ? /\.(js|jsx|mjs|cjs)$/
447
+ : /\.(js|jsx|mjs|ts|tsx|cjs)$/,
448
+ include: app_configs_1.configs.appSrc,
449
+ loader: require.resolve('babel-loader'),
450
+ options: Object.assign(Object.assign({}, babel_client_1.default), { cacheDirectory: mode === 'dev', cacheCompression: false, plugins: [
451
+ ...babel_client_1.default.plugins,
452
+ mode === 'dev'
453
+ ? [
454
+ require.resolve('react-refresh/babel'),
455
+ { skipEnvCheck: true },
456
+ ]
457
+ : undefined,
458
+ ].filter(Boolean) }),
459
+ };
460
+ }
461
+ function getTsLoaderIfEnabled(mode) {
462
+ if (app_configs_1.configs.codeLoader !== 'tsc' || !app_configs_1.configs.tsconfig) {
463
+ return false;
464
+ }
465
+ return {
466
+ test: /\.tsx?$/,
467
+ use: [
468
+ {
469
+ loader: require.resolve('babel-loader'),
470
+ options: Object.assign(Object.assign({}, babel_client_1.default), { cacheDirectory: mode === 'dev', cacheCompression: false, plugins: mode === 'dev'
471
+ ? [
472
+ require.resolve('react-refresh/babel'),
473
+ { skipEnvCheck: true },
474
+ ]
475
+ : undefined }),
476
+ },
477
+ {
478
+ loader: require.resolve('ts-loader'),
479
+ options: {
480
+ getCustomTransformers: () => ({
481
+ before: mode === 'dev' ? [(0, react_refresh_typescript_1.default)()] : [],
482
+ }),
483
+ onlyCompileBundledFiles: true,
484
+ transpileOnly: true,
485
+ happyPackMode: true,
486
+ configFile: app_configs_1.configs.tsconfig,
487
+ },
488
+ },
489
+ ],
490
+ };
491
+ }
492
+ function getExternalCodeLoader(mode) {
493
+ const baseLoaderConfig = {
494
+ test: /\.(js|mjs)$/,
495
+ exclude: /@babel(?:\/|\\{1,2})runtime/,
496
+ resolve: {
497
+ fullySpecified: false,
498
+ },
499
+ };
500
+ if (app_configs_1.configs.codeLoader === 'swc') {
501
+ return Object.assign(Object.assign({}, baseLoaderConfig), { loader: require.resolve('swc-loader'), options: {
502
+ cacheDirectory: mode === 'dev',
503
+ cacheCompression: false,
504
+ } });
505
+ }
506
+ return Object.assign(Object.assign({}, baseLoaderConfig), { loader: require.resolve('babel-loader'), options: Object.assign(Object.assign({}, babel_dependencies_1.babelDependencies), { babelrc: false, configFile: false, compact: false, cacheDirectory: mode === 'dev', cacheCompression: false }) });
507
+ }
@@ -1,2 +1,2 @@
1
1
  import { Configuration } from 'webpack';
2
- export declare const createServerConfig: (mode: 'dev' | 'prod') => Configuration;
2
+ export declare const createServerConfig: (mode: "dev" | "prod") => Configuration;
@@ -15,12 +15,13 @@ const tsconfig_paths_webpack_plugin_1 = __importDefault(require("tsconfig-paths-
15
15
  const webpack_1 = __importDefault(require("webpack"));
16
16
  const webpack_node_externals_1 = __importDefault(require("webpack-node-externals"));
17
17
  const get_entry_1 = __importDefault(require("./util/get-entry"));
18
+ const get_webpack_cache_dependencies_1 = require("./util/get-webpack-cache-dependencies");
18
19
  const app_configs_1 = __importDefault(require("./app-configs"));
19
20
  const babel_dependencies_1 = require("./babel-dependencies");
20
21
  const babel_server_1 = __importDefault(require("./babel-server"));
21
22
  const postcss_1 = __importDefault(require("./postcss"));
22
23
  const server_externals_exemptions_1 = require("./server-externals-exemptions");
23
- const get_webpack_cache_dependencies_1 = require("./util/get-webpack-cache-dependencies");
24
+ const swc_1 = require("./swc");
24
25
  const ReloadServerPlugin = require('../plugins/reload-server-webpack-plugin');
25
26
  const WatchMissingNodeModulesPlugin = require('../plugins/watch-missing-node-modules-plugin');
26
27
  const assetsIgnoreBanner = fs_1.default.readFileSync(require.resolve('./util/node-assets-ignore'), 'utf8');
@@ -115,51 +116,12 @@ const createServerConfig = (mode) => ({
115
116
  rules: [
116
117
  {
117
118
  oneOf: [
118
- // Process JS with Babel.
119
- {
120
- test: app_configs_1.default.useTscLoader ? /\.(js|jsx|mjs)$/ : /\.(js|jsx|mjs|ts|tsx)$/,
121
- include: app_configs_1.default.appSrc,
122
- loader: require.resolve('babel-loader'),
123
- options: Object.assign(Object.assign({}, babel_server_1.default), {
124
- // This is a feature of `babel-loader` for webpack (not Babel itself).
125
- // It enables caching results in ./node_modules/.cache/babel-loader/
126
- // directory for faster rebuilds.
127
- cacheDirectory: mode === 'dev' }),
128
- },
129
- app_configs_1.default.tsconfig &&
130
- app_configs_1.default.useTscLoader && {
131
- test: /\.tsx?$/,
132
- use: [
133
- {
134
- loader: require.resolve('babel-loader'),
135
- options: Object.assign({
136
- // This is a feature of `babel-loader` for webpack (not Babel itself).
137
- // It enables caching results in ./node_modules/.cache/babel-loader/
138
- // directory for faster rebuilds.
139
- cacheDirectory: mode === 'dev' }, babel_server_1.default),
140
- },
141
- {
142
- loader: require.resolve('ts-loader'),
143
- options: {
144
- onlyCompileBundledFiles: true,
145
- transpileOnly: true,
146
- happyPackMode: true,
147
- configFile: app_configs_1.default.tsconfig,
148
- },
149
- },
150
- ],
151
- },
152
- // Process any JS outside of the app with Babel.
153
- // Unlike the application JS, we only compile the standard ES features.
154
- {
155
- test: /\.(js|mjs)$/,
156
- exclude: /@babel(?:\/|\\{1,2})runtime/,
157
- loader: require.resolve('babel-loader'),
158
- resolve: {
159
- fullySpecified: false,
160
- },
161
- options: Object.assign(Object.assign({}, babel_dependencies_1.babelDependencies), { babelrc: false, configFile: false, compact: false, cacheDirectory: mode === 'dev', cacheCompression: false }),
162
- },
119
+ // Обработка основного кода приложения
120
+ getCodeLoader(mode),
121
+ // обработка ts кода если codeLoader = tsc
122
+ getTsLoaderIfEnabled(mode),
123
+ // Обработка внешнего для приложения кода (node_modules)
124
+ getExternalCodeLoader(mode),
163
125
  // replace css imports with empty files
164
126
  {
165
127
  test: cssRegex,
@@ -247,3 +209,65 @@ const createServerConfig = (mode) => ({
247
209
  },
248
210
  });
249
211
  exports.createServerConfig = createServerConfig;
212
+ function getCodeLoader(mode) {
213
+ if (app_configs_1.default.codeLoader === 'swc') {
214
+ return {
215
+ test: /\.(js|jsx|mjs|ts|tsx|cjs)$/,
216
+ include: app_configs_1.default.appSrc,
217
+ loader: require.resolve('swc-loader'),
218
+ options: swc_1.swcServerConfig,
219
+ };
220
+ }
221
+ return {
222
+ test: app_configs_1.default.codeLoader === 'tsc'
223
+ ? /\.(js|jsx|mjs|cjs)$/
224
+ : /\.(js|jsx|mjs|ts|tsx|cjs)$/,
225
+ include: app_configs_1.default.appSrc,
226
+ loader: require.resolve('babel-loader'),
227
+ options: Object.assign(Object.assign({}, babel_server_1.default), {
228
+ // This is a feature of `babel-loader` for webpack (not Babel itself).
229
+ // It enables caching results in ./node_modules/.cache/babel-loader/
230
+ // directory for faster rebuilds.
231
+ cacheDirectory: mode === 'dev' }),
232
+ };
233
+ }
234
+ function getTsLoaderIfEnabled(mode) {
235
+ if (app_configs_1.default.codeLoader !== 'tsc' || !app_configs_1.default.tsconfig) {
236
+ return false;
237
+ }
238
+ return {
239
+ test: /\.tsx?$/,
240
+ use: [
241
+ {
242
+ loader: require.resolve('babel-loader'),
243
+ options: Object.assign({
244
+ // This is a feature of `babel-loader` for webpack (not Babel itself).
245
+ // It enables caching results in ./node_modules/.cache/babel-loader/
246
+ // directory for faster rebuilds.
247
+ cacheDirectory: mode === 'dev' }, babel_server_1.default),
248
+ },
249
+ {
250
+ loader: require.resolve('ts-loader'),
251
+ options: {
252
+ onlyCompileBundledFiles: true,
253
+ transpileOnly: true,
254
+ happyPackMode: true,
255
+ configFile: app_configs_1.default.tsconfig,
256
+ },
257
+ },
258
+ ],
259
+ };
260
+ }
261
+ function getExternalCodeLoader(mode) {
262
+ const baseLoaderConfig = {
263
+ test: /\.(js|mjs)$/,
264
+ exclude: /@babel(?:\/|\\{1,2})runtime/,
265
+ resolve: {
266
+ fullySpecified: false,
267
+ },
268
+ };
269
+ if (app_configs_1.default.codeLoader === 'swc') {
270
+ return Object.assign(Object.assign({}, baseLoaderConfig), { loader: require.resolve('swc-loader') });
271
+ }
272
+ return Object.assign(Object.assign({}, baseLoaderConfig), { loader: require.resolve('babel-loader'), options: Object.assign(Object.assign({}, babel_dependencies_1.babelDependencies), { babelrc: false, configFile: false, compact: false, cacheDirectory: mode === 'dev', cacheCompression: false }) });
273
+ }
@@ -14,7 +14,7 @@ class RuntimeModule extends webpack_1.default.RuntimeModule {
14
14
  // eslint-disable-next-line class-methods-use-this
15
15
  generate() {
16
16
  return webpack_1.default.Template.asString([
17
- "if (typeof __webpack_modules__ !== 'undefined' && typeof document !== 'undefined') {",
17
+ "if (typeof __webpack_modules__ !== 'undefined' && typeof document !== 'undefined') {", // По какой-то причине вебпак пытается выполнить этот код не только в браузере, но и при сборке.
18
18
  `${exports.FULL_ARUI_RUNTIME_PATH} = { scriptSource: document.currentScript };`,
19
19
  '}',
20
20
  ]);
@@ -3,7 +3,8 @@ 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.getInsertCssRuntimeMethod = exports.AruiRuntimePlugin = void 0;
6
+ exports.AruiRuntimePlugin = void 0;
7
+ exports.getInsertCssRuntimeMethod = getInsertCssRuntimeMethod;
7
8
  const webpack_1 = __importDefault(require("webpack"));
8
9
  const arui_runtime_module_1 = require("./arui-runtime-module");
9
10
  class AruiRuntimePlugin {
@@ -47,4 +48,3 @@ function getInsertCssRuntimeMethod() {
47
48
  };
48
49
  /* eslint-enable */
49
50
  }
50
- exports.getInsertCssRuntimeMethod = getInsertCssRuntimeMethod;
@@ -32,7 +32,7 @@ ADD $NGINX_CONF_LOCATION ${nginxConfTargetLocation}
32
32
  ${nginxNonRootPart}
33
33
 
34
34
  ${app_configs_1.configs.runFromNonRootUser ? `ADD --chown=nginx:nginx ${appPathToAdd} ${appTargetPath}` : `ADD ${appPathToAdd} ${appTargetPath}`}
35
- ${app_configs_1.configs.clientOnly ? 'COPY env-config.jso[n] /src/ # конструкция с [n] нужная чтобы копирование было опциональным. Если файла не будет - сборка не упадёт' : ''}
35
+ ${app_configs_1.configs.clientOnly ? 'COPY env-config.jso[n] /src/' : ''}
36
36
  ${app_configs_1.configs.clientOnly ? 'CMD ["nginx"]' : ''}
37
37
  `;
38
38
  exports.default = (0, apply_overrides_1.default)('Dockerfile', dockerfileTemplate);