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.
- package/.turbo/turbo-test.log +7 -7
- package/CHANGELOG.md +52 -0
- package/build/commands/archive-build/index.js +2 -67
- package/build/commands/build/build-wrapper.d.ts +1 -1
- package/build/commands/build/build-wrapper.js +2 -2
- package/build/commands/build/index.js +1 -1
- package/build/commands/build/server.js +1 -1
- package/build/commands/docker-build/index.js +2 -60
- package/build/commands/docker-build-compiled/index.js +2 -41
- package/build/commands/util/artifacts-config.d.ts +25 -0
- package/build/commands/util/artifacts-config.js +120 -0
- package/build/commands/util/artifacts-deprecations.d.ts +9 -0
- package/build/commands/util/artifacts-deprecations.js +66 -0
- package/build/commands/util/arui-scripts-artifacts.d.ts +16 -0
- package/build/commands/util/arui-scripts-artifacts.js +29 -0
- package/build/commands/util/docker-build.d.ts +20 -8
- package/build/commands/util/docker-build.js +50 -101
- package/build/commands/util/exec.d.ts +1 -1
- package/build/commands/util/exec.js +4 -16
- package/build/commands/util/run-artifacts-cli.d.ts +7 -0
- package/build/commands/util/run-artifacts-cli.js +60 -0
- package/build/commands/util/yarn.d.ts +7 -2
- package/build/commands/util/yarn.js +15 -69
- package/build/configs/app-configs/get-defaults.js +13 -11
- package/build/configs/app-configs/types.d.ts +22 -15
- package/build/configs/app-configs/validate-settings-keys.d.ts +4 -1
- package/build/configs/app-configs/validate-settings-keys.js +5 -2
- package/build/configs/util/apply-overrides.d.ts +10 -0
- package/build/configs/util/apply-overrides.js +8 -0
- package/build/index.d.ts +13 -0
- package/build/index.js +25 -1
- package/docs/artifact.md +7 -3
- package/docs/overrides.md +14 -8
- package/docs/settings.md +10 -0
- package/package.json +11 -10
- package/tsconfig-local.tsbuildinfo +1 -1
- package/build/templates/base-nginx.conf.template.d.ts +0 -1
- package/build/templates/base-nginx.conf.template.js +0 -59
- package/build/templates/dockerfile-compiled.template.d.ts +0 -1
- package/build/templates/dockerfile-compiled.template.js +0 -56
- package/build/templates/dockerfile.template.d.ts +0 -1
- package/build/templates/dockerfile.template.js +0 -47
- package/build/templates/nginx.conf.template.d.ts +0 -1
- package/build/templates/nginx.conf.template.js +0 -50
- package/build/templates/start.template.d.ts +0 -1
- package/build/templates/start.template.js +0 -69
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { type BuildParams, dockerVersionSatisfies, getBuildParams } from '@alfalab/arui-scripts-artifacts';
|
|
2
|
+
export { dockerVersionSatisfies };
|
|
3
|
+
/**
|
|
4
|
+
* Совместимый слой поверх @alfalab/arui-scripts-artifacts: сохраняет исторические сигнатуры, которыми
|
|
5
|
+
* пользуются сторонние сборки и реэкспорт из `arui-scripts`.
|
|
6
|
+
*
|
|
7
|
+
* @deprecated Используйте одноименные функции из `@alfalab/arui-scripts-artifacts` — они принимают явный
|
|
8
|
+
* конфиг и не зависят от глобального `configs`. В следующей мажорной версии реэкспорт будет удален.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getBuildParamsFromArgs(): BuildParams;
|
|
6
11
|
type PrepareFilesForDockerParams = {
|
|
7
12
|
dockerfileTemplate: string;
|
|
8
13
|
nginxConfTemplate: string;
|
|
@@ -13,11 +18,18 @@ type PrepareFilesForDockerParams = {
|
|
|
13
18
|
allowLocalStartScript: boolean;
|
|
14
19
|
addNodeModulesToDockerIgnore: boolean;
|
|
15
20
|
};
|
|
16
|
-
|
|
17
|
-
|
|
21
|
+
/**
|
|
22
|
+
* @deprecated Используйте `prepareFilesForDocker` из `@alfalab/arui-scripts-artifacts`. В следующей
|
|
23
|
+
* мажорной версии реэкспорт будет удален.
|
|
24
|
+
*/
|
|
25
|
+
export declare function prepareFilesForDocker({ dockerfileTemplate, nginxConfTemplate, nginxBaseConfTemplate, startScriptTemplate, pathToTempDir, allowLocalDockerfile, allowLocalStartScript, addNodeModulesToDockerIgnore, }: PrepareFilesForDockerParams): Promise<import("@alfalab/arui-scripts-artifacts").PrepareFilesForDockerResult>;
|
|
18
26
|
type DockerBuildCommandParams = {
|
|
19
27
|
tempDirName: string;
|
|
20
28
|
imageFullName: string;
|
|
21
29
|
};
|
|
30
|
+
/**
|
|
31
|
+
* @deprecated Используйте `getDockerBuildCommand` из `@alfalab/arui-scripts-artifacts`. В следующей
|
|
32
|
+
* мажорной версии реэкспорт будет удален.
|
|
33
|
+
*/
|
|
22
34
|
export declare function getDockerBuildCommand({ tempDirName, imageFullName }: DockerBuildCommandParams): string;
|
|
23
|
-
export {};
|
|
35
|
+
export { getBuildParams };
|
|
@@ -12,116 +12,65 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.getBuildParams = exports.dockerVersionSatisfies = void 0;
|
|
15
16
|
exports.getBuildParamsFromArgs = getBuildParamsFromArgs;
|
|
16
17
|
exports.prepareFilesForDocker = prepareFilesForDocker;
|
|
17
|
-
exports.dockerVersionSatisfies = dockerVersionSatisfies;
|
|
18
18
|
exports.getDockerBuildCommand = getDockerBuildCommand;
|
|
19
19
|
const path_1 = __importDefault(require("path"));
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const
|
|
24
|
-
|
|
20
|
+
const arui_scripts_artifacts_1 = require("@alfalab/arui-scripts-artifacts");
|
|
21
|
+
Object.defineProperty(exports, "dockerVersionSatisfies", { enumerable: true, get: function () { return arui_scripts_artifacts_1.dockerVersionSatisfies; } });
|
|
22
|
+
Object.defineProperty(exports, "getBuildParams", { enumerable: true, get: function () { return arui_scripts_artifacts_1.getBuildParams; } });
|
|
23
|
+
const artifacts_config_1 = require("./artifacts-config");
|
|
24
|
+
/**
|
|
25
|
+
* Совместимый слой поверх @alfalab/arui-scripts-artifacts: сохраняет исторические сигнатуры, которыми
|
|
26
|
+
* пользуются сторонние сборки и реэкспорт из `arui-scripts`.
|
|
27
|
+
*
|
|
28
|
+
* @deprecated Используйте одноименные функции из `@alfalab/arui-scripts-artifacts` — они принимают явный
|
|
29
|
+
* конфиг и не зависят от глобального `configs`. В следующей мажорной версии реэкспорт будет удален.
|
|
30
|
+
*/
|
|
25
31
|
function getBuildParamsFromArgs() {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
dockerRegistry = argValue;
|
|
43
|
-
break;
|
|
44
|
-
default:
|
|
45
|
-
console.warn(`Unknown argument ${argName}`);
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
const tempDirName = '.docker-build';
|
|
49
|
-
const pathToTempDir = path_1.default.join(app_configs_1.configs.cwd, tempDirName);
|
|
50
|
-
const imageFullName = `${dockerRegistry ? `${dockerRegistry}/` : ''}${imageName}:${imageVersion}`;
|
|
51
|
-
return {
|
|
52
|
-
pathToTempDir,
|
|
53
|
-
imageFullName,
|
|
54
|
-
tempDirName,
|
|
55
|
-
};
|
|
32
|
+
return (0, arui_scripts_artifacts_1.getBuildParamsFromArgs)((0, artifacts_config_1.getResolvedArtifactsConfig)(), process.argv.slice(3));
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Разбирает `registry/name:version` обратно на имя и версию, чтобы собрать конфиг, из которого
|
|
36
|
+
* @alfalab/arui-scripts-artifacts соберет ровно ту же строку.
|
|
37
|
+
*/
|
|
38
|
+
function splitImageFullName(imageFullName) {
|
|
39
|
+
const lastColon = imageFullName.lastIndexOf(':');
|
|
40
|
+
const lastSlash = imageFullName.lastIndexOf('/');
|
|
41
|
+
if (lastColon > lastSlash) {
|
|
42
|
+
return {
|
|
43
|
+
name: imageFullName.slice(0, lastColon),
|
|
44
|
+
version: imageFullName.slice(lastColon + 1),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
return { name: imageFullName, version: '' };
|
|
56
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* @deprecated Используйте `prepareFilesForDocker` из `@alfalab/arui-scripts-artifacts`. В следующей
|
|
51
|
+
* мажорной версии реэкспорт будет удален.
|
|
52
|
+
*/
|
|
57
53
|
function prepareFilesForDocker(_a) {
|
|
58
54
|
return __awaiter(this, arguments, void 0, function* ({ dockerfileTemplate, nginxConfTemplate, nginxBaseConfTemplate, startScriptTemplate, pathToTempDir, allowLocalDockerfile, allowLocalStartScript, addNodeModulesToDockerIgnore, }) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
:
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
const dockerfile = app_configs_1.configs.localDockerfile && allowLocalDockerfile
|
|
70
|
-
? yield fs_extra_1.default.readFile(app_configs_1.configs.localDockerfile, 'utf8')
|
|
71
|
-
: dockerfileTemplate;
|
|
72
|
-
const startScript = app_configs_1.configs.localStartScript && allowLocalStartScript
|
|
73
|
-
? yield fs_extra_1.default.readFile(app_configs_1.configs.localStartScript, 'utf8')
|
|
74
|
-
: startScriptTemplate;
|
|
75
|
-
const dockerIgnoreFilePath = path_1.default.join(process.cwd(), '.dockerignore');
|
|
76
|
-
const dockerIgnoreFileContent = addNodeModulesToDockerIgnore &&
|
|
77
|
-
(yield getAndModifyDockerIgnoreContent(dockerIgnoreFilePath));
|
|
78
|
-
yield Promise.all([
|
|
79
|
-
fs_extra_1.default.writeFile(path_1.default.join(pathToTempDir, 'Dockerfile'), dockerfile, 'utf8'),
|
|
80
|
-
fs_extra_1.default.writeFile(path_1.default.join(pathToTempDir, get_defaults_1.nginxConfigFileName), nginxConf, 'utf8'),
|
|
81
|
-
nginxBaseConf &&
|
|
82
|
-
fs_extra_1.default.writeFile(path_1.default.join(pathToTempDir, get_defaults_1.baseNginxConfigFileName), nginxBaseConf, 'utf8'),
|
|
83
|
-
fs_extra_1.default.writeFile(path_1.default.join(pathToTempDir, 'start.sh'), startScript, {
|
|
84
|
-
encoding: 'utf8',
|
|
85
|
-
mode: 0o555,
|
|
86
|
-
}),
|
|
87
|
-
addNodeModulesToDockerIgnore &&
|
|
88
|
-
dockerIgnoreFileContent &&
|
|
89
|
-
fs_extra_1.default.writeFile(dockerIgnoreFilePath, dockerIgnoreFileContent, 'utf-8'),
|
|
90
|
-
].filter(Boolean));
|
|
55
|
+
const config = (0, artifacts_config_1.getResolvedArtifactsConfig)();
|
|
56
|
+
return (0, arui_scripts_artifacts_1.prepareFilesForDocker)({
|
|
57
|
+
config: Object.assign(Object.assign({}, config), { cwd: path_1.default.dirname(pathToTempDir), docker: Object.assign(Object.assign({}, config.docker), { tempDirName: path_1.default.basename(pathToTempDir), addNodeModulesToDockerIgnore }), localFiles: Object.assign(Object.assign({}, config.localFiles), { allowDockerfile: allowLocalDockerfile, allowStartScript: allowLocalStartScript }) }),
|
|
58
|
+
templates: {
|
|
59
|
+
dockerfile: dockerfileTemplate,
|
|
60
|
+
nginxConf: nginxConfTemplate,
|
|
61
|
+
nginxBaseConf: nginxBaseConfTemplate,
|
|
62
|
+
startScript: startScriptTemplate,
|
|
63
|
+
},
|
|
64
|
+
});
|
|
91
65
|
});
|
|
92
66
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
const dockerClientVersion = shelljs_1.default.exec("docker version --format '{{.Client.Version}}'", {
|
|
98
|
-
silent: true,
|
|
99
|
-
});
|
|
100
|
-
return ((0, satisfies_1.default)(dockerServerVersion.toString(), request) &&
|
|
101
|
-
(0, satisfies_1.default)(dockerClientVersion.toString(), request));
|
|
102
|
-
}
|
|
67
|
+
/**
|
|
68
|
+
* @deprecated Используйте `getDockerBuildCommand` из `@alfalab/arui-scripts-artifacts`. В следующей
|
|
69
|
+
* мажорной версии реэкспорт будет удален.
|
|
70
|
+
*/
|
|
103
71
|
function getDockerBuildCommand({ tempDirName, imageFullName }) {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
// https://docs.docker.com/engine/release-notes/20.10/
|
|
109
|
-
const canUsePlatformFlag = dockerVersionSatisfies('>=20.10.21');
|
|
110
|
-
return `docker build ${canUsePlatformFlag ? '--platform linux/x86_64' : ''} \
|
|
111
|
-
-f "./${tempDirName}/Dockerfile" \
|
|
112
|
-
--build-arg START_SH_LOCATION="./${tempDirName}/start.sh" \
|
|
113
|
-
--build-arg NGINX_CONF_LOCATION="./${tempDirName}/${get_defaults_1.nginxConfigFileName}" \
|
|
114
|
-
--build-arg NGINX_BASE_CONF_LOCATION="./${tempDirName}/${get_defaults_1.baseNginxConfigFileName}" \
|
|
115
|
-
-t ${imageFullName} .`;
|
|
116
|
-
}
|
|
117
|
-
function getAndModifyDockerIgnoreContent(dockerIgnoreFilePath) {
|
|
118
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
119
|
-
if (fs_extra_1.default.existsSync(dockerIgnoreFilePath)) {
|
|
120
|
-
return fs_extra_1.default
|
|
121
|
-
.readFile(dockerIgnoreFilePath, 'utf-8')
|
|
122
|
-
.then((ignores) => `${ignores}\nnode_modules`);
|
|
123
|
-
}
|
|
124
|
-
yield fs_extra_1.default.createFile(dockerIgnoreFilePath);
|
|
125
|
-
return 'node_modules';
|
|
126
|
-
});
|
|
72
|
+
const config = (0, artifacts_config_1.getResolvedArtifactsConfig)();
|
|
73
|
+
return (0, arui_scripts_artifacts_1.getDockerBuildCommand)(Object.assign(Object.assign(Object.assign({}, config), splitImageFullName(imageFullName)), {
|
|
74
|
+
// имя образа уже содержит registry, второй раз подставлять его не нужно
|
|
75
|
+
docker: Object.assign(Object.assign({}, config.docker), { registry: '', tempDirName }) }));
|
|
127
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export { exec, ExecError } from '@alfalab/arui-scripts-artifacts';
|
|
@@ -1,18 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.exec =
|
|
7
|
-
|
|
8
|
-
function
|
|
9
|
-
|
|
10
|
-
console.log(`Executing command: ${command}`);
|
|
11
|
-
shelljs_1.default.exec(command, (code) => {
|
|
12
|
-
if (code === 0) {
|
|
13
|
-
return resolve(code);
|
|
14
|
-
}
|
|
15
|
-
return reject(code);
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
}
|
|
3
|
+
exports.ExecError = exports.exec = void 0;
|
|
4
|
+
var arui_scripts_artifacts_1 = require("@alfalab/arui-scripts-artifacts");
|
|
5
|
+
Object.defineProperty(exports, "exec", { enumerable: true, get: function () { return arui_scripts_artifacts_1.exec; } });
|
|
6
|
+
Object.defineProperty(exports, "ExecError", { enumerable: true, get: function () { return arui_scripts_artifacts_1.ExecError; } });
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Запускает команду CLI @alfalab/arui-scripts-artifacts с конфигом arui-scripts.
|
|
3
|
+
*
|
|
4
|
+
* Позиционные аргументы (`name=...`, `version=...`, `registry=...`) прокидываются как есть — их
|
|
5
|
+
* разбирает сам CLI.
|
|
6
|
+
*/
|
|
7
|
+
export declare function runArtifactsCli(command: string): Promise<void>;
|
|
@@ -0,0 +1,60 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.runArtifactsCli = runArtifactsCli;
|
|
16
|
+
const path_1 = __importDefault(require("path"));
|
|
17
|
+
const arui_scripts_artifacts_1 = require("@alfalab/arui-scripts-artifacts");
|
|
18
|
+
/**
|
|
19
|
+
* Конфиг едет вместе с arui-scripts — см. `arui-scripts-artifacts.ts`. `require.resolve` дает абсолютный
|
|
20
|
+
* путь до собранного файла и не выполняет его: конфиг исполнит уже CLI, в процессе сборки.
|
|
21
|
+
*/
|
|
22
|
+
const ARTIFACTS_CONFIG_PATH = require.resolve('./arui-scripts-artifacts');
|
|
23
|
+
/**
|
|
24
|
+
* Абсолютный путь до бинарника CLI @alfalab/arui-scripts-artifacts.
|
|
25
|
+
*
|
|
26
|
+
* Резолвим через package.json пакета, а не полагаемся на `node_modules/.bin` в PATH: команды
|
|
27
|
+
* arui-scripts запускают не только из yarn-скриптов.
|
|
28
|
+
*/
|
|
29
|
+
function getArtifactsCliPath() {
|
|
30
|
+
const packageJsonPath = require.resolve('@alfalab/arui-scripts-artifacts/package.json');
|
|
31
|
+
// eslint-disable-next-line global-require, import/no-dynamic-require, @typescript-eslint/no-var-requires
|
|
32
|
+
const { bin } = require(packageJsonPath);
|
|
33
|
+
return path_1.default.join(path_1.default.dirname(packageJsonPath), typeof bin === 'string' ? bin : bin['arui-scripts-artifacts']);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Запускает команду CLI @alfalab/arui-scripts-artifacts с конфигом arui-scripts.
|
|
37
|
+
*
|
|
38
|
+
* Позиционные аргументы (`name=...`, `version=...`, `registry=...`) прокидываются как есть — их
|
|
39
|
+
* разбирает сам CLI.
|
|
40
|
+
*/
|
|
41
|
+
function runArtifactsCli(command) {
|
|
42
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
43
|
+
const args = process.argv.slice(3);
|
|
44
|
+
const cliCommand = [
|
|
45
|
+
(0, arui_scripts_artifacts_1.shellQuote)(process.execPath),
|
|
46
|
+
(0, arui_scripts_artifacts_1.shellQuote)(getArtifactsCliPath()),
|
|
47
|
+
command,
|
|
48
|
+
'-c',
|
|
49
|
+
(0, arui_scripts_artifacts_1.shellQuote)(ARTIFACTS_CONFIG_PATH),
|
|
50
|
+
...args,
|
|
51
|
+
].join(' ');
|
|
52
|
+
try {
|
|
53
|
+
yield (0, arui_scripts_artifacts_1.exec)(cliCommand);
|
|
54
|
+
}
|
|
55
|
+
catch (_a) {
|
|
56
|
+
// CLI уже напечатал ошибку (и стек, если включен debug)
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
type YarnVersion
|
|
1
|
+
import { type YarnVersion } from '@alfalab/arui-scripts-artifacts';
|
|
2
|
+
/**
|
|
3
|
+
* Совместимый слой поверх @alfalab/arui-scripts-artifacts: сохраняет исторические сигнатуры без аргументов,
|
|
4
|
+
* подставляя значения из глобального `configs`.
|
|
5
|
+
*
|
|
6
|
+
* @deprecated Используйте одноименные функции из `@alfalab/arui-scripts-artifacts`.
|
|
7
|
+
*/
|
|
2
8
|
export declare function getYarnVersion(): YarnVersion;
|
|
3
9
|
export declare function getPruningCommand(): string;
|
|
4
10
|
export declare function getInstallProductionCommand(): string;
|
|
@@ -14,4 +20,3 @@ export declare function getYarnPathFromRc(): string | null;
|
|
|
14
20
|
* Возвращает пустую строку, если symlink не нужен.
|
|
15
21
|
*/
|
|
16
22
|
export declare function getYarnBinSymlinkCommand(): string;
|
|
17
|
-
export {};
|
|
@@ -1,82 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.getYarnVersion = getYarnVersion;
|
|
7
4
|
exports.getPruningCommand = getPruningCommand;
|
|
8
5
|
exports.getInstallProductionCommand = getInstallProductionCommand;
|
|
9
6
|
exports.getYarnPathFromRc = getYarnPathFromRc;
|
|
10
7
|
exports.getYarnBinSymlinkCommand = getYarnBinSymlinkCommand;
|
|
11
|
-
const
|
|
12
|
-
const path_1 = __importDefault(require("path"));
|
|
13
|
-
const shelljs_1 = __importDefault(require("shelljs"));
|
|
8
|
+
const arui_scripts_artifacts_1 = require("@alfalab/arui-scripts-artifacts");
|
|
14
9
|
const app_configs_1 = require("../../configs/app-configs");
|
|
10
|
+
/**
|
|
11
|
+
* Совместимый слой поверх @alfalab/arui-scripts-artifacts: сохраняет исторические сигнатуры без аргументов,
|
|
12
|
+
* подставляя значения из глобального `configs`.
|
|
13
|
+
*
|
|
14
|
+
* @deprecated Используйте одноименные функции из `@alfalab/arui-scripts-artifacts`.
|
|
15
|
+
*/
|
|
15
16
|
function getYarnVersion() {
|
|
16
|
-
|
|
17
|
-
const yarnVersion = shelljs_1.default.exec('yarn -v', { silent: true });
|
|
18
|
-
const yarnMajorVersion = Number(yarnVersion.split('.')[0]);
|
|
19
|
-
return yarnMajorVersion > 1 ? '2+' : '1';
|
|
20
|
-
}
|
|
21
|
-
return 'unavailable';
|
|
17
|
+
return (0, arui_scripts_artifacts_1.getYarnVersion)({ useYarn: app_configs_1.configs.useYarn });
|
|
22
18
|
}
|
|
23
19
|
function getPruningCommand() {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
switch (yarnVersion) {
|
|
29
|
-
case '1': {
|
|
30
|
-
return 'yarn install --production --ignore-optional --frozen-lockfile --ignore-scripts --prefer-offline';
|
|
31
|
-
}
|
|
32
|
-
case '2+': {
|
|
33
|
-
return 'yarn workspaces focus --production --all';
|
|
34
|
-
}
|
|
35
|
-
case 'unavailable': {
|
|
36
|
-
return 'npm prune --production';
|
|
37
|
-
}
|
|
38
|
-
default: {
|
|
39
|
-
return '';
|
|
40
|
-
}
|
|
41
|
-
}
|
|
20
|
+
return (0, arui_scripts_artifacts_1.getPruningCommand)({
|
|
21
|
+
yarnVersion: getYarnVersion(),
|
|
22
|
+
clientOnly: app_configs_1.configs.clientOnly,
|
|
23
|
+
});
|
|
42
24
|
}
|
|
43
25
|
function getInstallProductionCommand() {
|
|
44
|
-
|
|
45
|
-
switch (yarnVersion) {
|
|
46
|
-
case '1': {
|
|
47
|
-
return 'yarn install --production --ignore-optional --frozen-lockfile --ignore-scripts --prefer-offline';
|
|
48
|
-
}
|
|
49
|
-
case '2+': {
|
|
50
|
-
return 'yarn workspaces focus --production --all';
|
|
51
|
-
}
|
|
52
|
-
case 'unavailable': {
|
|
53
|
-
return 'npm install --production';
|
|
54
|
-
}
|
|
55
|
-
default: {
|
|
56
|
-
return '';
|
|
57
|
-
}
|
|
58
|
-
}
|
|
26
|
+
return (0, arui_scripts_artifacts_1.getInstallProductionCommand)(getYarnVersion());
|
|
59
27
|
}
|
|
60
28
|
/**
|
|
61
29
|
* Читает значение yarnPath из .yarnrc.yml.
|
|
62
30
|
* Возвращает путь к бинарнику yarn (например .yarn/releases/yarn-4.18.0.cjs) или null.
|
|
63
31
|
*/
|
|
64
32
|
function getYarnPathFromRc() {
|
|
65
|
-
|
|
66
|
-
if (!shelljs_1.default.test('-f', rcPath)) {
|
|
67
|
-
return null;
|
|
68
|
-
}
|
|
69
|
-
let content;
|
|
70
|
-
try {
|
|
71
|
-
content = fs_1.default.readFileSync(rcPath, 'utf8');
|
|
72
|
-
}
|
|
73
|
-
catch (_a) {
|
|
74
|
-
return null;
|
|
75
|
-
}
|
|
76
|
-
// Ищем строку вида: yarnPath: .yarn/releases/yarn-4.18.0.cjs
|
|
77
|
-
// Значение может быть в кавычках или без
|
|
78
|
-
const match = content.match(/^\s*yarnPath:\s*['"]?([^'"\s]+)['"]?\s*$/m);
|
|
79
|
-
return match ? match[1] : null;
|
|
33
|
+
return (0, arui_scripts_artifacts_1.getYarnPathFromRc)(app_configs_1.configs.cwd);
|
|
80
34
|
}
|
|
81
35
|
/**
|
|
82
36
|
* Возвращает команду для создания symlink на yarn бинарник в Docker-образе.
|
|
@@ -85,13 +39,5 @@ function getYarnPathFromRc() {
|
|
|
85
39
|
* Возвращает пустую строку, если symlink не нужен.
|
|
86
40
|
*/
|
|
87
41
|
function getYarnBinSymlinkCommand() {
|
|
88
|
-
|
|
89
|
-
return '';
|
|
90
|
-
}
|
|
91
|
-
const yarnPath = getYarnPathFromRc();
|
|
92
|
-
if (!yarnPath) {
|
|
93
|
-
return '';
|
|
94
|
-
}
|
|
95
|
-
// WORKDIR в Dockerfile = /src
|
|
96
|
-
return `ln -sf /src/${yarnPath} /usr/local/bin/yarn && \\\n `;
|
|
42
|
+
return (0, arui_scripts_artifacts_1.getYarnBinSymlinkCommand)({ yarnVersion: getYarnVersion(), cwd: app_configs_1.configs.cwd });
|
|
97
43
|
}
|
|
@@ -32,22 +32,24 @@ function getDefaultAppConfig() {
|
|
|
32
32
|
// paths
|
|
33
33
|
buildPath: '.build',
|
|
34
34
|
assetsPath: 'assets',
|
|
35
|
-
additionalBuildPath: ['config'],
|
|
36
35
|
statsOutputFilename: 'stats.json',
|
|
37
36
|
serverEntry: path_1.default.resolve(absoluteSrcPath, 'server/index'),
|
|
38
37
|
serverOutput: 'server.js',
|
|
39
38
|
clientPolyfillsEntry: null,
|
|
40
39
|
clientEntry: path_1.default.resolve(absoluteSrcPath, 'index'),
|
|
41
|
-
// docker compilation configs
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
40
|
+
// docker/archive compilation configs
|
|
41
|
+
// Дефолты этих настроек живут в @alfalab/arui-scripts-artifacts (resolveArtifactsConfig).
|
|
42
|
+
// Здесь ключи объявлены без значений, чтобы настройка из package.json/конфига не считалась
|
|
43
|
+
// неизвестной, а `undefined` доехал до scripts-artifacts и был заполнен там.
|
|
44
|
+
dockerRegistry: undefined,
|
|
45
|
+
baseDockerImage: undefined,
|
|
46
|
+
nginxRootPath: undefined,
|
|
47
|
+
nginx: undefined,
|
|
48
|
+
runFromNonRootUser: undefined,
|
|
49
|
+
removeDevDependenciesDuringDockerBuild: undefined,
|
|
50
|
+
deleteNpm: undefined,
|
|
51
|
+
archiveName: undefined,
|
|
52
|
+
additionalBuildPath: undefined,
|
|
51
53
|
dictionaryCompression: {
|
|
52
54
|
dictionaryPath: [],
|
|
53
55
|
enablePreviousVersionHeaders: false,
|
|
@@ -2,6 +2,7 @@ import { type DevTool, type Shared } from '@rspack/core';
|
|
|
2
2
|
import { type Configuration as DevServerConfiguration } from '@rspack/dev-server';
|
|
3
3
|
import { type PluginOptions as ReactCompilerOptions } from 'babel-plugin-react-compiler';
|
|
4
4
|
import type webpackNodeExternals from 'webpack-node-externals';
|
|
5
|
+
import { type NginxBaseConfOptions } from '@alfalab/arui-scripts-artifacts';
|
|
5
6
|
/**
|
|
6
7
|
* Конфигурация arui-scripts, которая может быть переопределена приложением
|
|
7
8
|
*/
|
|
@@ -17,26 +18,32 @@ export type AppConfigs = {
|
|
|
17
18
|
clientOnly: boolean;
|
|
18
19
|
buildPath: string;
|
|
19
20
|
assetsPath: string;
|
|
20
|
-
additionalBuildPath: string[];
|
|
21
21
|
statsOutputFilename: string;
|
|
22
22
|
serverEntry: string | string[] | Record<string, string | string[]>;
|
|
23
23
|
serverOutput: string;
|
|
24
24
|
clientPolyfillsEntry: null | string | string[];
|
|
25
25
|
clientEntry: string | string[] | Record<string, string | string[]>;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
removeDevDependenciesDuringDockerBuild
|
|
38
|
-
deleteNpm
|
|
39
|
-
|
|
26
|
+
/** @deprecated Используйте `docker.registry` в конфиге @alfalab/arui-scripts-artifacts. */
|
|
27
|
+
dockerRegistry?: string;
|
|
28
|
+
/** @deprecated Используйте `docker.baseImage` в конфиге @alfalab/arui-scripts-artifacts. */
|
|
29
|
+
baseDockerImage?: string;
|
|
30
|
+
/** @deprecated Используйте `nginx.rootPath` в конфиге @alfalab/arui-scripts-artifacts. */
|
|
31
|
+
nginxRootPath?: string;
|
|
32
|
+
/** @deprecated Используйте `nginx.baseConf` в конфиге @alfalab/arui-scripts-artifacts. */
|
|
33
|
+
nginx?: NginxBaseConfOptions | null;
|
|
34
|
+
/** @deprecated Используйте `docker.runFromNonRootUser` в конфиге @alfalab/arui-scripts-artifacts. */
|
|
35
|
+
runFromNonRootUser?: boolean;
|
|
36
|
+
/** @deprecated Используйте `build.removeDevDependencies` в конфиге @alfalab/arui-scripts-artifacts. */
|
|
37
|
+
removeDevDependenciesDuringDockerBuild?: boolean;
|
|
38
|
+
/** @deprecated Используйте `docker.deleteNpm` в конфиге @alfalab/arui-scripts-artifacts. */
|
|
39
|
+
deleteNpm?: boolean;
|
|
40
|
+
/** @deprecated Используйте `archive.name` в конфиге @alfalab/arui-scripts-artifacts. */
|
|
41
|
+
archiveName?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Директории проекта, которые кладутся в tar-архив рядом со сборкой.
|
|
44
|
+
* @deprecated Используйте `archive.additionalPaths` в конфиге @alfalab/arui-scripts-artifacts.
|
|
45
|
+
*/
|
|
46
|
+
additionalBuildPath?: string[];
|
|
40
47
|
dictionaryCompression: {
|
|
41
48
|
dictionaryPath: string[];
|
|
42
49
|
enablePreviousVersionHeaders?: boolean;
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Функция проверяет что все ключи объекта settingsObject есть в уже существующей
|
|
2
|
+
* Функция проверяет что все ключи объекта settingsObject есть в уже существующей конфигурации.
|
|
3
|
+
*
|
|
4
|
+
* Проверяется именно наличие ключа, а не значения: у части настроек (например, docker-специфичных)
|
|
5
|
+
* дефолт живет в @alfalab/arui-scripts-artifacts, поэтому в конфиге они лежат со значением `undefined`.
|
|
3
6
|
*/
|
|
4
7
|
export declare function validateSettingsKeys(existingConfig: Record<string, unknown>, settingsObject: Record<string, unknown>, source?: string): void;
|
|
@@ -2,11 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.validateSettingsKeys = validateSettingsKeys;
|
|
4
4
|
/**
|
|
5
|
-
* Функция проверяет что все ключи объекта settingsObject есть в уже существующей
|
|
5
|
+
* Функция проверяет что все ключи объекта settingsObject есть в уже существующей конфигурации.
|
|
6
|
+
*
|
|
7
|
+
* Проверяется именно наличие ключа, а не значения: у части настроек (например, docker-специфичных)
|
|
8
|
+
* дефолт живет в @alfalab/arui-scripts-artifacts, поэтому в конфиге они лежат со значением `undefined`.
|
|
6
9
|
*/
|
|
7
10
|
function validateSettingsKeys(existingConfig, settingsObject, source) {
|
|
8
11
|
Object.keys(settingsObject).forEach((setting) => {
|
|
9
|
-
if (
|
|
12
|
+
if (!Object.prototype.hasOwnProperty.call(existingConfig, setting)) {
|
|
10
13
|
console.warn(`Неизвестная настройка "${setting}" в ${source || 'конфигурации'}`);
|
|
11
14
|
}
|
|
12
15
|
});
|
|
@@ -29,10 +29,15 @@ type Overrides = {
|
|
|
29
29
|
browsers: string[];
|
|
30
30
|
supportingBrowsers: string[];
|
|
31
31
|
supportingNode: string[];
|
|
32
|
+
/** @deprecated Используйте `overrides.dockerfile` в конфиге @alfalab/arui-scripts-artifacts. */
|
|
32
33
|
Dockerfile: string;
|
|
34
|
+
/** @deprecated Используйте `overrides.dockerfileCompiled` в конфиге @alfalab/arui-scripts-artifacts. */
|
|
33
35
|
DockerfileCompiled: string;
|
|
36
|
+
/** @deprecated Используйте `overrides.nginxConf` в конфиге @alfalab/arui-scripts-artifacts. */
|
|
34
37
|
nginx: string;
|
|
38
|
+
/** @deprecated Используйте `overrides.baseNginxConf` в конфиге @alfalab/arui-scripts-artifacts. */
|
|
35
39
|
nginxConf: string;
|
|
40
|
+
/** @deprecated Используйте `overrides.startScript` в конфиге @alfalab/arui-scripts-artifacts. */
|
|
36
41
|
'start.sh': string;
|
|
37
42
|
serverExternalsExemptions: Array<string | RegExp>;
|
|
38
43
|
html: string;
|
|
@@ -96,6 +101,11 @@ type OverrideFunction<K extends keyof Overrides> = (config: Overrides[K], appCon
|
|
|
96
101
|
export type OverrideFile = {
|
|
97
102
|
[K in keyof Overrides]?: OverrideFunction<K>;
|
|
98
103
|
} & Partial<Record<DeprecatedOverrideKey, OverrideFunction<'rspack'>>>;
|
|
104
|
+
/**
|
|
105
|
+
* Объявлен ли оверрайд с таким ключом хоть в одном файле оверрайдов. Нужно, чтобы предупреждать об
|
|
106
|
+
* устаревших ключах только тем, кто ими действительно пользуется.
|
|
107
|
+
*/
|
|
108
|
+
export declare function hasOverride(overridesKey: keyof Overrides): boolean;
|
|
99
109
|
/**
|
|
100
110
|
*
|
|
101
111
|
* @param {String|String[]} overridesKey Ключи оверрайда
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hasOverride = hasOverride;
|
|
3
4
|
exports.applyOverrides = applyOverrides;
|
|
4
5
|
const app_configs_1 = require("../app-configs");
|
|
5
6
|
// Маппинг устаревших webpack-ключей оверрайдов на актуальные ключи для rspack
|
|
@@ -54,6 +55,13 @@ overrides = app_configs_1.configs.overridesPath.map((path) => {
|
|
|
54
55
|
return {};
|
|
55
56
|
}
|
|
56
57
|
});
|
|
58
|
+
/**
|
|
59
|
+
* Объявлен ли оверрайд с таким ключом хоть в одном файле оверрайдов. Нужно, чтобы предупреждать об
|
|
60
|
+
* устаревших ключах только тем, кто ими действительно пользуется.
|
|
61
|
+
*/
|
|
62
|
+
function hasOverride(overridesKey) {
|
|
63
|
+
return overrides.some((override) => Object.prototype.hasOwnProperty.call(override, overridesKey));
|
|
64
|
+
}
|
|
57
65
|
/**
|
|
58
66
|
*
|
|
59
67
|
* @param {String|String[]} overridesKey Ключи оверрайда
|
package/build/index.d.ts
CHANGED
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
export type { OverrideFile } from './configs/util/apply-overrides';
|
|
2
2
|
export type { AppConfigs, CompatModuleConfig, PackageSettings } from './configs/app-configs/types';
|
|
3
|
+
/**
|
|
4
|
+
* Утилиты сборки docker-образа, привязанные к глобальному конфигу arui-scripts.
|
|
5
|
+
* @deprecated Используйте `@alfalab/arui-scripts-artifacts` — там те же функции принимают явный конфиг.
|
|
6
|
+
* В следующей мажорной версии эти реэкспорты будут удалены.
|
|
7
|
+
*/
|
|
3
8
|
export { prepareFilesForDocker } from './commands/util/docker-build';
|
|
4
9
|
export { getBuildParamsFromArgs } from './commands/util/docker-build';
|
|
5
10
|
export { getDockerBuildCommand } from './commands/util/docker-build';
|
|
11
|
+
/**
|
|
12
|
+
* Опции сборки docker-образа, собранные из конфига arui-scripts. Точка входа для тех, кто хочет
|
|
13
|
+
* собрать образ через `@alfalab/arui-scripts-artifacts`, но переиспользовать настройки arui-scripts.
|
|
14
|
+
* @deprecated Слой обратной совместимости: в следующей мажорной версии настройки сборки артефактов
|
|
15
|
+
* будут жить только в конфиге `arui-scripts-artifacts.ts`.
|
|
16
|
+
*/
|
|
17
|
+
export { getArtifactsOptions, getResolvedArtifactsConfig } from './commands/util/artifacts-config';
|
|
18
|
+
export { buildDockerImage, getBuildParams, renderBaseNginxConf, renderDockerfile, renderDockerfileCompiled, renderTemplates, renderNginxConf, renderStartScript, resolveArtifactsConfig, type ArtifactsOptions, type ArtifactTemplateOverrides, type ArtifactTemplates, type ResolvedArtifactsConfig, } from '@alfalab/arui-scripts-artifacts';
|
|
6
19
|
export { patchMainRspackConfigForModules, patchMainWebpackConfigForModules, } from './configs/modules';
|