arui-scripts 23.8.1 → 23.9.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 (46) hide show
  1. package/.turbo/turbo-test.log +7 -7
  2. package/CHANGELOG.md +52 -0
  3. package/build/commands/archive-build/index.js +2 -67
  4. package/build/commands/build/build-wrapper.d.ts +1 -1
  5. package/build/commands/build/build-wrapper.js +2 -2
  6. package/build/commands/build/index.js +1 -1
  7. package/build/commands/build/server.js +1 -1
  8. package/build/commands/docker-build/index.js +2 -60
  9. package/build/commands/docker-build-compiled/index.js +2 -41
  10. package/build/commands/util/artifacts-config.d.ts +25 -0
  11. package/build/commands/util/artifacts-config.js +120 -0
  12. package/build/commands/util/artifacts-deprecations.d.ts +9 -0
  13. package/build/commands/util/artifacts-deprecations.js +66 -0
  14. package/build/commands/util/arui-scripts-artifacts.d.ts +16 -0
  15. package/build/commands/util/arui-scripts-artifacts.js +29 -0
  16. package/build/commands/util/docker-build.d.ts +20 -8
  17. package/build/commands/util/docker-build.js +50 -101
  18. package/build/commands/util/exec.d.ts +1 -1
  19. package/build/commands/util/exec.js +4 -16
  20. package/build/commands/util/run-artifacts-cli.d.ts +7 -0
  21. package/build/commands/util/run-artifacts-cli.js +60 -0
  22. package/build/commands/util/yarn.d.ts +7 -2
  23. package/build/commands/util/yarn.js +15 -69
  24. package/build/configs/app-configs/get-defaults.js +13 -11
  25. package/build/configs/app-configs/types.d.ts +22 -15
  26. package/build/configs/app-configs/validate-settings-keys.d.ts +4 -1
  27. package/build/configs/app-configs/validate-settings-keys.js +5 -2
  28. package/build/configs/util/apply-overrides.d.ts +10 -0
  29. package/build/configs/util/apply-overrides.js +8 -0
  30. package/build/index.d.ts +13 -0
  31. package/build/index.js +25 -1
  32. package/docs/artifact.md +7 -3
  33. package/docs/overrides.md +14 -8
  34. package/docs/settings.md +10 -0
  35. package/package.json +11 -10
  36. package/tsconfig-local.tsbuildinfo +1 -1
  37. package/build/templates/base-nginx.conf.template.d.ts +0 -1
  38. package/build/templates/base-nginx.conf.template.js +0 -59
  39. package/build/templates/dockerfile-compiled.template.d.ts +0 -1
  40. package/build/templates/dockerfile-compiled.template.js +0 -56
  41. package/build/templates/dockerfile.template.d.ts +0 -1
  42. package/build/templates/dockerfile.template.js +0 -47
  43. package/build/templates/nginx.conf.template.d.ts +0 -1
  44. package/build/templates/nginx.conf.template.js +0 -50
  45. package/build/templates/start.template.d.ts +0 -1
  46. package/build/templates/start.template.js +0 -69
@@ -1,25 +1,25 @@
1
1
  ts-jest[versions] (WARN) Version 6.0.2 of typescript installed has not been tested with ts-jest. If you're experiencing issues, consider using a supported version (>=4.3.0 <6.0.0-0). Please do not report issues in ts-jest if you are using unsupported versions.
2
2
  ts-jest[versions] (WARN) Version 6.0.2 of typescript installed has not been tested with ts-jest. If you're experiencing issues, consider using a supported version (>=4.3.0 <6.0.0-0). Please do not report issues in ts-jest if you are using unsupported versions.
3
3
  ts-jest[versions] (WARN) Version 6.0.2 of typescript installed has not been tested with ts-jest. If you're experiencing issues, consider using a supported version (>=4.3.0 <6.0.0-0). Please do not report issues in ts-jest if you are using unsupported versions.
4
- PASS src/templates/__tests__/dockerfile-templates.tests.ts (36.188 s)
5
- PASS src/plugins/postcss-global-variables/utils/__tests__/add-global-variable.tests.ts
4
+ PASS src/plugins/postcss-global-variables/utils/__tests__/add-global-variable.tests.ts (17.834 s)
6
5
  PASS src/bin/__tests__/create-cli.tests.ts
7
6
  PASS src/configs/app-configs/__tests__/update-with-presets.tests.ts
8
7
  PASS src/configs/util/__tests__/create-watch-ignore-regex.tests.ts
9
8
  PASS src/configs/util/__tests__/apply-overrides.tests.ts
9
+ PASS src/commands/util/__tests__/artifacts-deprecations.tests.ts
10
10
  PASS src/configs/app-configs/__tests__/update-with-env.tests.ts
11
- PASS src/plugins/__tests__/attribute-module-css.tests.ts (41.808 s)
11
+ PASS src/plugins/__tests__/attribute-module-css.tests.ts (36.576 s)
12
12
  PASS src/configs/app-configs/__tests__/update-with-package.tests.ts
13
13
  PASS src/configs/util/__tests__/compress-with-dcb.test.ts
14
14
  PASS src/configs/util/__tests__/get-polyfills.tests.ts
15
15
  PASS src/plugins/postcss-global-variables/utils/__tests__/parse-variables.tests.ts
16
16
  PASS src/plugins/postcss-global-variables/utils/__tests__/get-media-query-name.tests.ts
17
17
  PASS src/configs/app-configs/__tests__/validate-settings-keys.tests.ts
18
- PASS src/configs/__tests__/webpack-client-modules.tests.ts (7.961 s)
19
- PASS src/configs/util/__tests__/find-plugin.tests.ts (45.786 s)
18
+ PASS src/configs/__tests__/webpack-client-modules.tests.ts (19.679 s)
19
+ PASS src/configs/util/__tests__/find-plugin.tests.ts (40.022 s)
20
20
 
21
21
  Test Suites: 16 passed, 16 total
22
- Tests: 52 passed, 52 total
22
+ Tests: 46 passed, 46 total
23
23
  Snapshots: 0 total
24
- Time: 47.32 s
24
+ Time: 40.869 s
25
25
  Ran all test suites.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,57 @@
1
1
  # arui-scripts
2
2
 
3
+ ## 23.9.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#599](https://github.com/core-ds/arui-scripts/pull/599) [`03f84fad`](https://github.com/core-ds/arui-scripts/commit/03f84fadb4d4a13c455624630d1902113ac29906) Thanks [@Burzachil](https://github.com/Burzachil)! - **Что изменилось**
8
+ Rspack обновлён с 2.0.0 до 2.2.5 (анонсы [2.1](https://rspack.rs/blog/announcing-2-1) и [2.2](https://rspack.rs/blog/announcing-2-2)): исправлены ошибки генерации кода, утечки памяти в dev-режиме и CSS HMR. Вместе с ним обновлены `@swc/core`, `swc-plugin-coverage-instrument`, `ts-checker-rspack-plugin` (проверка типов в `build` стала быстрее), `@rsdoctor/rspack-plugin` и `rspack-manifest-plugin`.
9
+
10
+ ## 23.8.2
11
+
12
+ ### Patch Changes
13
+
14
+ - [#565](https://github.com/core-ds/arui-scripts/pull/565) [`a6c84b42`](https://github.com/core-ds/arui-scripts/commit/a6c84b4246fdeb156da2a0e5980dfba796e2d7d5) Thanks [@sowtame](https://github.com/sowtame)! - Сборка артефактов поставки вынесена в отдельный пакет `@alfalab/arui-scripts-artifacts`.
15
+
16
+ Пакет устроен как набор чистых функций и настраивается одним файлом `arui-scripts-artifacts.ts` в
17
+ корне проекта (путь можно задать через `--c`/`--config`). Конфиг может быть на TypeScript, ESM или
18
+ CommonJS и описывает всё: базовый образ, параметры nginx, кастомные шаблоны и свои команды сборки —
19
+ так что кастомные сборочные скрипты в проектах больше не нужны.
20
+
21
+ Поддерживаются оба типа артефактов: docker-образ (`docker-build`, `docker-build:compiled`) и
22
+ tar-архив (`archive-build`). Хост-пайплайн (очистка `buildPath` → сборка приложения → удаление
23
+ dev-зависимостей) у них общий.
24
+
25
+ `arui-scripts` теперь использует этот пакет вместо собственной копии шаблонов и утилит. Поведение
26
+ команд и все ключи оверрайдов (`Dockerfile`, `DockerfileCompiled`, `nginx`, `nginxConf`, `start.sh`)
27
+ сохранены без изменений — отрендеренные Dockerfile, nginx-конфиги и start.sh совпадают побайтово.
28
+
29
+ Попутно починен `archive-build`: он падал с `TypeError: Cannot read properties of undefined
30
+
31
+ (reading 'c')`, потому что в `tar@7`нет default-экспорта, а код использовал`import tar from 'tar'`.
32
+
33
+ Команды `arui-scripts docker-build`, `docker-build:compiled` и `archive-build` теперь запускают CLI
34
+ `@alfalab/arui-scripts-artifacts` с конфигом, который arui-scripts возит с собой. Благодаря этому
35
+ `arui-scripts-artifacts.ts` в корне проекта работает и через команды arui-scripts: он находится по
36
+ обычным правилам и кладется поверх настроек из конфига arui-scripts. Заводить его по-прежнему не
37
+ обязательно.
38
+
39
+ Настройки сборки артефактов в конфиге arui-scripts (`dockerRegistry`, `baseDockerImage`,
40
+ `nginxRootPath`, `nginx`, `runFromNonRootUser`, `removeDevDependenciesDuringDockerBuild`,
41
+ `deleteNpm`, `archiveName`, `additionalBuildPath`) и оверрайды `Dockerfile`, `DockerfileCompiled`, `nginx`,
42
+ `nginxConf`, `start.sh` объявлены устаревшими: они продолжают работать, но команды сборки печатают
43
+ предупреждение со ссылкой на замену, а в следующей мажорной версии будут удалены.
44
+
45
+ Настройки в конфиге @alfalab/arui-scripts-artifacts сгруппированы по доменам: `docker`, `nginx`, `archive`, `build`,
46
+ `packageManager`, `localFiles`. Так же разложен и код пакета — по папке на домен.
47
+
48
+ Единственное отличие в поведении: `archive-build` теперь подхватывает локальный `start.sh` из корня
49
+ проекта так же, как уже подхватывал `nginx.conf` (раньше игнорировал). Отключается опцией
50
+ `localFiles.allowStartScript: false`.
51
+
52
+ - Updated dependencies [[`a6c84b42`](https://github.com/core-ds/arui-scripts/commit/a6c84b4246fdeb156da2a0e5980dfba796e2d7d5)]:
53
+ - @alfalab/arui-scripts-artifacts@1.0.0
54
+
3
55
  ## 23.8.1
4
56
 
5
57
  ### Patch Changes
@@ -8,73 +8,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
11
  Object.defineProperty(exports, "__esModule", { value: true });
15
- const path_1 = __importDefault(require("path"));
16
- const fs_extra_1 = __importDefault(require("fs-extra"));
17
- const tar_1 = __importDefault(require("tar"));
18
- const app_configs_1 = require("../../configs/app-configs");
19
- const nginx_conf_template_1 = require("../../templates/nginx.conf.template");
20
- const start_template_1 = require("../../templates/start.template");
21
- const exec_1 = require("../util/exec");
22
- const yarn_1 = require("../util/yarn");
23
- const tempDirName = '.archive-build';
24
- const nginxConfFileName = 'nginx.conf';
25
- const startScriptFileName = 'start.sh';
26
- const nodeModulesDirName = 'node_modules';
27
- const packageJsonFileName = 'package.json';
28
- const pathToTempDir = path_1.default.join(app_configs_1.configs.cwd, tempDirName);
29
- const nginxConfPath = path_1.default.join(pathToTempDir, nginxConfFileName);
30
- const startScriptPath = path_1.default.join(pathToTempDir, startScriptFileName);
31
- const nodeModulesPath = path_1.default.join(app_configs_1.configs.cwd, nodeModulesDirName);
32
- const packageJsonPath = path_1.default.join(app_configs_1.configs.cwd, packageJsonFileName);
12
+ const run_artifacts_cli_1 = require("../util/run-artifacts-cli");
33
13
  (() => __awaiter(void 0, void 0, void 0, function* () {
34
- try {
35
- console.time('Total time');
36
- console.time('Setting up time');
37
- yield fs_extra_1.default.emptyDir(pathToTempDir);
38
- const nginxConf = app_configs_1.configs.localNginxConf
39
- ? yield fs_extra_1.default.readFile(app_configs_1.configs.localNginxConf, 'utf8')
40
- : nginx_conf_template_1.nginxConfTemplate;
41
- yield Promise.all([
42
- fs_extra_1.default.writeFile(nginxConfPath, nginxConf, 'utf8'),
43
- fs_extra_1.default.writeFile(startScriptPath, start_template_1.startScript, { encoding: 'utf8', mode: 0o555 }),
44
- fs_extra_1.default.remove(app_configs_1.configs.buildPath),
45
- ]);
46
- console.timeEnd('Setting up time');
47
- console.time('Build application time');
48
- // run build script
49
- yield (0, exec_1.exec)('npm run build');
50
- console.timeEnd('Build application time');
51
- console.time('Remove build dependencies time');
52
- const pruneCommand = (0, yarn_1.getPruningCommand)();
53
- yield (0, exec_1.exec)(pruneCommand);
54
- console.timeEnd('Remove build dependencies time');
55
- console.time('Archive build time');
56
- yield Promise.all([
57
- fs_extra_1.default.copy(app_configs_1.configs.buildPath, path_1.default.join(pathToTempDir, app_configs_1.configs.buildPath)),
58
- fs_extra_1.default.copy(nodeModulesPath, path_1.default.join(pathToTempDir, nodeModulesDirName)),
59
- fs_extra_1.default.copy(packageJsonPath, path_1.default.join(pathToTempDir, packageJsonFileName)),
60
- ...app_configs_1.configs.additionalBuildPath.map((additionalPath) => fs_extra_1.default.copy(path_1.default.join(app_configs_1.configs.cwd, additionalPath), path_1.default.join(pathToTempDir, additionalPath))),
61
- ]);
62
- yield tar_1.default.c({
63
- file: app_configs_1.configs.archiveName,
64
- cwd: pathToTempDir,
65
- }, fs_extra_1.default.readdirSync(pathToTempDir));
66
- console.timeEnd('Archive build time');
67
- console.time('Cleanup time');
68
- // remove temp directory
69
- yield fs_extra_1.default.remove(pathToTempDir);
70
- console.timeEnd('Cleanup time');
71
- console.timeEnd('Total time');
72
- }
73
- catch (err) {
74
- console.error('Error during archive-build.');
75
- if (app_configs_1.configs.debug) {
76
- console.error(err);
77
- }
78
- process.exit(1);
79
- }
14
+ yield (0, run_artifacts_cli_1.runArtifactsCli)('archive-build');
80
15
  }))();
@@ -1,4 +1,4 @@
1
- import { Stats, MultiStats, Configuration } from '@rspack/core';
1
+ import { type Configuration, type MultiStats, type Stats } from '@rspack/core';
2
2
  type BuildResult = {
3
3
  stats: Stats | MultiStats;
4
4
  warnings: string[];
@@ -3,11 +3,11 @@ 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
- const chalk_1 = __importDefault(require("chalk"));
7
6
  const core_1 = require("@rspack/core");
7
+ const chalk_1 = __importDefault(require("chalk"));
8
8
  const format_webpack_messages_1 = require("../util/format-webpack-messages");
9
9
  function build(config, previousFileSizes) {
10
- let compiler = (0, core_1.rspack)(config);
10
+ const compiler = (0, core_1.rspack)(config);
11
11
  return new Promise((resolve, reject) => {
12
12
  compiler.run((err, stats) => {
13
13
  if (err) {
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const run_compilers_1 = require("../util/run-compilers");
4
3
  const app_configs_1 = require("../../configs/app-configs");
4
+ const run_compilers_1 = require("../util/run-compilers");
5
5
  process.env.BABEL_ENV = 'production';
6
6
  process.env.NODE_ENV = 'production';
7
7
  const compilersCommands = [require.resolve('./client')];
@@ -4,10 +4,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const chalk_1 = __importDefault(require("chalk"));
7
- const build_wrapper_1 = __importDefault(require("./build-wrapper"));
8
7
  const rspack_server_prod_1 = require("../../configs/rspack.server.prod");
9
8
  const supporting_node_1 = require("../../configs/supporting-node");
10
9
  const print_build_error_1 = require("../util/print-build-error");
10
+ const build_wrapper_1 = __importDefault(require("./build-wrapper"));
11
11
  process.env.BROWSERSLIST = supporting_node_1.supportingNode.join(',');
12
12
  console.log(chalk_1.default.magenta('Building server...'));
13
13
  (0, build_wrapper_1.default)(rspack_server_prod_1.webpackServerConfig)
@@ -8,66 +8,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
11
  Object.defineProperty(exports, "__esModule", { value: true });
15
- const fs_extra_1 = __importDefault(require("fs-extra"));
16
- const app_configs_1 = require("../../configs/app-configs");
17
- const base_nginx_conf_template_1 = require("../../templates/base-nginx.conf.template");
18
- const dockerfile_template_1 = require("../../templates/dockerfile.template");
19
- const nginx_conf_template_1 = require("../../templates/nginx.conf.template");
20
- const start_template_1 = require("../../templates/start.template");
21
- const docker_build_1 = require("../util/docker-build");
22
- const exec_1 = require("../util/exec");
23
- const yarn_1 = require("../util/yarn");
12
+ const run_artifacts_cli_1 = require("../util/run-artifacts-cli");
24
13
  (() => __awaiter(void 0, void 0, void 0, function* () {
25
- const { imageFullName, pathToTempDir, tempDirName } = (0, docker_build_1.getBuildParamsFromArgs)();
26
- try {
27
- console.log(`Build docker image ${imageFullName}`);
28
- console.time('Total time');
29
- console.time('Setting up time');
30
- yield (0, docker_build_1.prepareFilesForDocker)({
31
- pathToTempDir,
32
- dockerfileTemplate: dockerfile_template_1.dockerfileTemplate,
33
- nginxConfTemplate: nginx_conf_template_1.nginxConfTemplate,
34
- nginxBaseConfTemplate: base_nginx_conf_template_1.nginxBaseConfTemplate,
35
- startScriptTemplate: start_template_1.startScript,
36
- allowLocalDockerfile: true,
37
- allowLocalStartScript: true,
38
- addNodeModulesToDockerIgnore: false,
39
- });
40
- yield fs_extra_1.default.remove(app_configs_1.configs.buildPath);
41
- console.timeEnd('Setting up time');
42
- console.time('Build application time');
43
- // run build script
44
- yield (0, exec_1.exec)('npm run build');
45
- console.timeEnd('Build application time');
46
- if (app_configs_1.configs.removeDevDependenciesDuringDockerBuild) {
47
- console.time('Remove dev dependencies time');
48
- const pruneCommand = (0, yarn_1.getPruningCommand)();
49
- yield (0, exec_1.exec)(pruneCommand);
50
- console.timeEnd('Remove dev dependencies time');
51
- }
52
- console.time('Build docker image time');
53
- yield (0, exec_1.exec)((0, docker_build_1.getDockerBuildCommand)({ tempDirName, imageFullName }));
54
- console.timeEnd('Build docker image time');
55
- console.time('Cleanup time');
56
- // remove temp directory
57
- yield fs_extra_1.default.remove(pathToTempDir);
58
- // guard against pushing the image during tests
59
- if (!app_configs_1.configs.debug) {
60
- yield (0, exec_1.exec)(`docker push ${imageFullName}`);
61
- }
62
- console.timeEnd('Cleanup time');
63
- console.timeEnd('Total time');
64
- }
65
- catch (err) {
66
- yield fs_extra_1.default.remove(pathToTempDir);
67
- console.error('Error during docker-build.');
68
- if (app_configs_1.configs.debug) {
69
- console.error(err);
70
- }
71
- process.exit(1);
72
- }
14
+ yield (0, run_artifacts_cli_1.runArtifactsCli)('docker-build');
73
15
  }))();
@@ -8,47 +8,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
11
  Object.defineProperty(exports, "__esModule", { value: true });
15
- const fs_extra_1 = __importDefault(require("fs-extra"));
16
- const app_configs_1 = require("../../configs/app-configs");
17
- const base_nginx_conf_template_1 = require("../../templates/base-nginx.conf.template");
18
- const dockerfile_compiled_template_1 = require("../../templates/dockerfile-compiled.template");
19
- const nginx_conf_template_1 = require("../../templates/nginx.conf.template");
20
- const start_template_1 = require("../../templates/start.template");
21
- const docker_build_1 = require("../util/docker-build");
22
- const exec_1 = require("../util/exec");
12
+ const run_artifacts_cli_1 = require("../util/run-artifacts-cli");
23
13
  (() => __awaiter(void 0, void 0, void 0, function* () {
24
- const { imageFullName, pathToTempDir, tempDirName } = (0, docker_build_1.getBuildParamsFromArgs)();
25
- try {
26
- console.log(`Build docker image ${imageFullName}`);
27
- console.time('Total time');
28
- yield (0, docker_build_1.prepareFilesForDocker)({
29
- pathToTempDir,
30
- dockerfileTemplate: dockerfile_compiled_template_1.dockerfileTemplate,
31
- nginxConfTemplate: nginx_conf_template_1.nginxConfTemplate,
32
- nginxBaseConfTemplate: base_nginx_conf_template_1.nginxBaseConfTemplate,
33
- startScriptTemplate: start_template_1.startScript,
34
- allowLocalDockerfile: false,
35
- allowLocalStartScript: false,
36
- addNodeModulesToDockerIgnore: true,
37
- });
38
- yield (0, exec_1.exec)((0, docker_build_1.getDockerBuildCommand)({ tempDirName, imageFullName }));
39
- yield fs_extra_1.default.remove(pathToTempDir);
40
- // guard against pushing the image during tests
41
- if (!app_configs_1.configs.debug) {
42
- yield (0, exec_1.exec)(`docker push ${imageFullName}`);
43
- }
44
- console.timeEnd('Total time');
45
- }
46
- catch (err) {
47
- yield fs_extra_1.default.remove(pathToTempDir);
48
- console.error('Error during docker-build.');
49
- if (app_configs_1.configs.debug) {
50
- console.error(err);
51
- }
52
- process.exit(1);
53
- }
14
+ yield (0, run_artifacts_cli_1.runArtifactsCli)('docker-build:compiled');
54
15
  }))();
@@ -0,0 +1,25 @@
1
+ import { type ArtifactsConfigFile, type ResolvedArtifactsConfig } from '@alfalab/arui-scripts-artifacts';
2
+ /**
3
+ * Собирает из плоского конфига arui-scripts полноценный конфиг @alfalab/arui-scripts-artifacts —
4
+ * ровно в той же форме, в какой его пишут руками в `arui-scripts-artifacts.ts` в корне проекта: на
5
+ * верхнем уровне общее для всех сборок, в `commands` — то, чем конкретная команда отличается.
6
+ *
7
+ * Это единственная точка связи между двумя пакетами: сами шаблоны и утилиты сборки живут в
8
+ * @alfalab/arui-scripts-artifacts и ничего не знают про `configs`.
9
+ *
10
+ * Здесь происходит только маппинг значений. Дефолты docker/nginx/archive-настроек не дублируются:
11
+ * если пользователь ничего не задал, сюда приезжает `undefined` и значение подставит
12
+ * `resolveArtifactsConfig`.
13
+ *
14
+ * @deprecated Сам маппинг — слой обратной совместимости. В следующей мажорной версии настройки
15
+ * сборки артефактов будут жить только в конфиге @alfalab/arui-scripts-artifacts.
16
+ */
17
+ export declare function getArtifactsOptions(extraOptions?: ArtifactsConfigFile): ArtifactsConfigFile;
18
+ /**
19
+ * Донасыщенный конфиг сборки, построенный из `configs`. Мемоизирован, потому что резолв читает
20
+ * package.json и версию yarn.
21
+ *
22
+ * Резолвится только верхний уровень: командные секции разбирает CLI, когда знает, какую команду
23
+ * запустили.
24
+ */
25
+ export declare function getResolvedArtifactsConfig(): ResolvedArtifactsConfig;
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.getArtifactsOptions = getArtifactsOptions;
15
+ exports.getResolvedArtifactsConfig = getResolvedArtifactsConfig;
16
+ const arui_scripts_artifacts_1 = require("@alfalab/arui-scripts-artifacts");
17
+ const app_configs_1 = require("../../configs/app-configs");
18
+ const apply_overrides_1 = require("../../configs/util/apply-overrides");
19
+ const artifacts_deprecations_1 = require("./artifacts-deprecations");
20
+ /**
21
+ * Оверрайды шаблонов из `arui-scripts.overrides.ts`. Ключи в @alfalab/arui-scripts-artifacts переименованы,
22
+ * поэтому здесь мы явно транслируем их в исторические имена arui-scripts.
23
+ *
24
+ * @deprecated Слой обратной совместимости: в следующей мажорной версии оверрайды шаблонов останутся
25
+ * только в конфиге @alfalab/arui-scripts-artifacts (`overrides`).
26
+ *
27
+ * Обратите внимание: в arui-scripts `nginx` — это server-блок (`nginx.conf`), а `nginxConf` —
28
+ * базовый http-блок (`base-nginx.conf`). Имена исторически перепутаны, и эта таблица — единственное
29
+ * место, где это знание нужно.
30
+ */
31
+ const legacyTemplateOverrides = {
32
+ dockerfile: (generated) => (0, apply_overrides_1.applyOverrides)('Dockerfile', generated),
33
+ dockerfileCompiled: (generated) => (0, apply_overrides_1.applyOverrides)('DockerfileCompiled', generated),
34
+ nginxConf: (generated) => (0, apply_overrides_1.applyOverrides)('nginx', generated),
35
+ baseNginxConf: (generated) => (0, apply_overrides_1.applyOverrides)('nginxConf', generated),
36
+ startScript: (generated) => (0, apply_overrides_1.applyOverrides)('start.sh', generated),
37
+ };
38
+ /**
39
+ * Собирает из плоского конфига arui-scripts полноценный конфиг @alfalab/arui-scripts-artifacts —
40
+ * ровно в той же форме, в какой его пишут руками в `arui-scripts-artifacts.ts` в корне проекта: на
41
+ * верхнем уровне общее для всех сборок, в `commands` — то, чем конкретная команда отличается.
42
+ *
43
+ * Это единственная точка связи между двумя пакетами: сами шаблоны и утилиты сборки живут в
44
+ * @alfalab/arui-scripts-artifacts и ничего не знают про `configs`.
45
+ *
46
+ * Здесь происходит только маппинг значений. Дефолты docker/nginx/archive-настроек не дублируются:
47
+ * если пользователь ничего не задал, сюда приезжает `undefined` и значение подставит
48
+ * `resolveArtifactsConfig`.
49
+ *
50
+ * @deprecated Сам маппинг — слой обратной совместимости. В следующей мажорной версии настройки
51
+ * сборки артефактов будут жить только в конфиге @alfalab/arui-scripts-artifacts.
52
+ */
53
+ function getArtifactsOptions(extraOptions = {}) {
54
+ (0, artifacts_deprecations_1.warnAboutArtifactsDeprecations)();
55
+ const options = {
56
+ name: app_configs_1.configs.name,
57
+ version: app_configs_1.configs.version,
58
+ cwd: app_configs_1.configs.cwd,
59
+ debug: app_configs_1.configs.debug,
60
+ clientOnly: app_configs_1.configs.clientOnly,
61
+ buildPath: app_configs_1.configs.buildPath,
62
+ serverOutput: app_configs_1.configs.serverOutput,
63
+ serverPort: app_configs_1.configs.serverPort,
64
+ assetsPath: app_configs_1.configs.assetsPath,
65
+ publicPath: app_configs_1.configs.publicPath,
66
+ docker: {
67
+ registry: app_configs_1.configs.dockerRegistry,
68
+ baseImage: app_configs_1.configs.baseDockerImage,
69
+ runFromNonRootUser: app_configs_1.configs.runFromNonRootUser,
70
+ deleteNpm: app_configs_1.configs.deleteNpm,
71
+ },
72
+ nginx: {
73
+ port: app_configs_1.configs.clientServerPort,
74
+ rootPath: app_configs_1.configs.nginxRootPath,
75
+ enablePreviousVersionHeaders: app_configs_1.configs.dictionaryCompression.enablePreviousVersionHeaders,
76
+ baseConf: app_configs_1.configs.nginx,
77
+ },
78
+ archive: {
79
+ name: app_configs_1.configs.archiveName,
80
+ additionalPaths: app_configs_1.configs.additionalBuildPath,
81
+ },
82
+ build: {
83
+ removeDevDependencies: app_configs_1.configs.removeDevDependenciesDuringDockerBuild,
84
+ },
85
+ packageManager: {
86
+ useYarn: app_configs_1.configs.useYarn,
87
+ },
88
+ localFiles: {
89
+ dockerfile: app_configs_1.configs.localDockerfile,
90
+ startScript: app_configs_1.configs.localStartScript,
91
+ nginxConf: app_configs_1.configs.localNginxConf,
92
+ nginxBaseConf: app_configs_1.configs.localNginxBaseConf,
93
+ },
94
+ overrides: legacyTemplateOverrides,
95
+ commands: {
96
+ 'archive-build': {
97
+ // archive-build исторически всегда удаляет dev-зависимости, независимо от
98
+ // removeDevDependenciesDuringDockerBuild
99
+ build: { removeDevDependencies: true },
100
+ },
101
+ },
102
+ };
103
+ // сливаем по тем же правилам, что и сам файл конфига: секции по полям, `commands` по имени
104
+ return (0, arui_scripts_artifacts_1.mergeConfigFiles)(options, extraOptions);
105
+ }
106
+ let cachedConfig = null;
107
+ /**
108
+ * Донасыщенный конфиг сборки, построенный из `configs`. Мемоизирован, потому что резолв читает
109
+ * package.json и версию yarn.
110
+ *
111
+ * Резолвится только верхний уровень: командные секции разбирает CLI, когда знает, какую команду
112
+ * запустили.
113
+ */
114
+ function getResolvedArtifactsConfig() {
115
+ if (!cachedConfig) {
116
+ const _a = getArtifactsOptions(), { commands } = _a, sharedOptions = __rest(_a, ["commands"]);
117
+ cachedConfig = (0, arui_scripts_artifacts_1.resolveArtifactsConfig)(sharedOptions);
118
+ }
119
+ return cachedConfig;
120
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Предупреждает о настройках и оверрайдах сборки артефактов, которые задает проект. Вызывается из
3
+ * команд сборки (docker-build, docker-build:compiled, archive-build), поэтому при обычной разработке
4
+ * в консоль ничего не сыпется.
5
+ *
6
+ * Дефолты этих настроек живут в @alfalab/arui-scripts-artifacts, а в конфиге arui-scripts они
7
+ * `undefined` — так что «настройка задана» здесь означает именно «проект ее переопределил».
8
+ */
9
+ export declare function warnAboutArtifactsDeprecations(): void;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.warnAboutArtifactsDeprecations = warnAboutArtifactsDeprecations;
4
+ const app_configs_1 = require("../../configs/app-configs");
5
+ const apply_overrides_1 = require("../../configs/util/apply-overrides");
6
+ /**
7
+ * Настройки сборки артефактов, которые остались в arui-scripts только ради обратной совместимости.
8
+ * В следующей мажорной версии они будут удалены — их место в конфиге `arui-scripts-artifacts.ts`.
9
+ *
10
+ * Значение — путь до той же настройки в @alfalab/arui-scripts-artifacts.
11
+ */
12
+ const DEPRECATED_SETTINGS = {
13
+ dockerRegistry: 'docker.registry',
14
+ baseDockerImage: 'docker.baseImage',
15
+ runFromNonRootUser: 'docker.runFromNonRootUser',
16
+ deleteNpm: 'docker.deleteNpm',
17
+ nginxRootPath: 'nginx.rootPath',
18
+ nginx: 'nginx.baseConf',
19
+ archiveName: 'archive.name',
20
+ additionalBuildPath: 'archive.additionalPaths',
21
+ removeDevDependenciesDuringDockerBuild: 'build.removeDevDependencies',
22
+ };
23
+ /**
24
+ * Ключи оверрайдов шаблонов из `arui-scripts.overrides.ts` и их замена в конфиге артефактов.
25
+ *
26
+ * Напоминание: в arui-scripts `nginx` — это server-блок, а `nginxConf` — базовый http-блок; в
27
+ * @alfalab/arui-scripts-artifacts они названы по смыслу, поэтому имена не совпадают.
28
+ */
29
+ const DEPRECATED_OVERRIDES = {
30
+ Dockerfile: 'overrides.dockerfile',
31
+ DockerfileCompiled: 'overrides.dockerfileCompiled',
32
+ nginx: 'overrides.nginxConf',
33
+ nginxConf: 'overrides.baseNginxConf',
34
+ 'start.sh': 'overrides.startScript',
35
+ };
36
+ let warned = false;
37
+ /**
38
+ * Предупреждает о настройках и оверрайдах сборки артефактов, которые задает проект. Вызывается из
39
+ * команд сборки (docker-build, docker-build:compiled, archive-build), поэтому при обычной разработке
40
+ * в консоль ничего не сыпется.
41
+ *
42
+ * Дефолты этих настроек живут в @alfalab/arui-scripts-artifacts, а в конфиге arui-scripts они
43
+ * `undefined` — так что «настройка задана» здесь означает именно «проект ее переопределил».
44
+ */
45
+ function warnAboutArtifactsDeprecations() {
46
+ if (warned) {
47
+ return;
48
+ }
49
+ warned = true;
50
+ const usedSettings = Object.keys(DEPRECATED_SETTINGS)
51
+ .filter((setting) => app_configs_1.configs[setting] !== undefined)
52
+ .map((setting) => ` ${setting} → ${DEPRECATED_SETTINGS[setting]}`);
53
+ const usedOverrides = Object.keys(DEPRECATED_OVERRIDES)
54
+ .filter((key) => (0, apply_overrides_1.hasOverride)(key))
55
+ .map((key) => ` оверрайд ${key} → ${DEPRECATED_OVERRIDES[key]}`);
56
+ if (!usedSettings.length && !usedOverrides.length) {
57
+ return;
58
+ }
59
+ console.warn([
60
+ 'Настройки сборки артефактов в arui-scripts объявлены устаревшими и будут удалены в следующей мажорной версии.',
61
+ 'Перенесите их в конфиг @alfalab/arui-scripts-artifacts (arui-scripts-artifacts.ts в корне проекта):',
62
+ ...usedSettings,
63
+ ...usedOverrides,
64
+ 'Подробнее: https://github.com/core-ds/arui-scripts/blob/master/packages/arui-scripts-artifacts/docs/migration.md',
65
+ ].join('\n'));
66
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * `arui-scripts-artifacts.ts`, который arui-scripts возит с собой. Назван так же, как конфиг в
3
+ * корне проекта, потому что это он и есть — просто дефолтный, собранный из настроек arui-scripts.
4
+ *
5
+ * Команды `docker-build`, `docker-build:compiled` и `archive-build` не зовут либу напрямую, а
6
+ * запускают ее CLI с этим файлом в `-c` — тот же прием, что и `rsbuild build -c ...`. Поэтому
7
+ * заводить свой конфиг в корне проекта не обязательно: без него настройки берутся отсюда.
8
+ *
9
+ * Если такой файл в проекте есть, он подхватывается по стандартным правилам либы и кладется
10
+ * поверх — именно туда deprecated-настройки arui-scripts и просят перенести.
11
+ *
12
+ * Экспортируется функция, а не объект: `configs` читает package.json и файлы проекта, и делать это
13
+ * нужно в момент запуска команды, а не при загрузке модуля.
14
+ */
15
+ declare const _default: import("@alfalab/arui-scripts-artifacts").ArtifactsConfigFileExport;
16
+ export default _default;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const arui_scripts_artifacts_1 = require("@alfalab/arui-scripts-artifacts");
13
+ const app_configs_1 = require("../../configs/app-configs");
14
+ const artifacts_config_1 = require("./artifacts-config");
15
+ /**
16
+ * `arui-scripts-artifacts.ts`, который arui-scripts возит с собой. Назван так же, как конфиг в
17
+ * корне проекта, потому что это он и есть — просто дефолтный, собранный из настроек arui-scripts.
18
+ *
19
+ * Команды `docker-build`, `docker-build:compiled` и `archive-build` не зовут либу напрямую, а
20
+ * запускают ее CLI с этим файлом в `-c` — тот же прием, что и `rsbuild build -c ...`. Поэтому
21
+ * заводить свой конфиг в корне проекта не обязательно: без него настройки берутся отсюда.
22
+ *
23
+ * Если такой файл в проекте есть, он подхватывается по стандартным правилам либы и кладется
24
+ * поверх — именно туда deprecated-настройки arui-scripts и просят перенести.
25
+ *
26
+ * Экспортируется функция, а не объект: `configs` читает package.json и файлы проекта, и делать это
27
+ * нужно в момент запуска команды, а не при загрузке модуля.
28
+ */
29
+ exports.default = (0, arui_scripts_artifacts_1.defineConfig)(() => __awaiter(void 0, void 0, void 0, function* () { return (0, arui_scripts_artifacts_1.mergeConfigFiles)((0, artifacts_config_1.getArtifactsOptions)(), yield (0, arui_scripts_artifacts_1.resolveConfigFile)(app_configs_1.configs.cwd)); }));