arui-scripts 23.1.0 → 23.3.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 +8 -7
- package/CHANGELOG.md +15 -0
- package/README.md +23 -0
- package/build/bin/commands-registry.d.ts +8 -0
- package/build/bin/commands-registry.js +80 -0
- package/build/bin/create-cli.d.ts +2 -0
- package/build/bin/create-cli.js +34 -0
- package/build/bin/index.js +2 -23
- package/build/configs/app-configs/get-defaults.js +1 -0
- package/build/configs/app-configs/types.d.ts +1 -0
- package/build/configs/jest/settings.d.ts +1 -0
- package/build/configs/jest/settings.js +18 -0
- package/docs/cli.md +23 -0
- package/docs/commands.md +31 -11
- package/docs/settings.md +22 -0
- package/package.json +4 -2
- package/tsconfig-local.tsbuildinfo +1 -1
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,23 +1,24 @@
|
|
|
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/
|
|
4
|
+
PASS src/bin/__tests__/create-cli.tests.ts (32.447 s)
|
|
5
|
+
PASS src/configs/app-configs/__tests__/update-with-presets.tests.ts
|
|
5
6
|
PASS src/configs/util/__tests__/create-watch-ignore-regex.tests.ts
|
|
7
|
+
PASS src/plugins/postcss-global-variables/utils/__tests__/add-global-variable.tests.ts (32.626 s)
|
|
6
8
|
PASS src/configs/util/__tests__/apply-overrides.tests.ts
|
|
7
9
|
PASS src/configs/app-configs/__tests__/update-with-env.tests.ts
|
|
8
|
-
PASS src/plugins/postcss-global-variables/utils/__tests__/add-global-variable.tests.ts (24.667 s)
|
|
9
10
|
PASS src/configs/app-configs/__tests__/update-with-package.tests.ts
|
|
10
11
|
PASS src/configs/util/__tests__/compress-with-dcb.test.ts
|
|
11
12
|
PASS src/configs/util/__tests__/get-polyfills.tests.ts
|
|
12
13
|
PASS src/plugins/postcss-global-variables/utils/__tests__/parse-variables.tests.ts
|
|
13
14
|
PASS src/plugins/postcss-global-variables/utils/__tests__/get-media-query-name.tests.ts
|
|
14
15
|
PASS src/configs/app-configs/__tests__/validate-settings-keys.tests.ts
|
|
15
|
-
PASS src/configs/__tests__/webpack-client-modules.tests.ts (
|
|
16
|
-
PASS src/configs/util/__tests__/find-plugin.tests.ts (
|
|
16
|
+
PASS src/configs/__tests__/webpack-client-modules.tests.ts (9.936 s)
|
|
17
|
+
PASS src/configs/util/__tests__/find-plugin.tests.ts (43.865 s)
|
|
17
18
|
A worker process has failed to exit gracefully and has been force exited. This is likely caused by tests leaking due to improper teardown. Try running with --detectOpenHandles to find leaks. Active timers can also cause this, ensure that .unref() was called on them.
|
|
18
19
|
|
|
19
|
-
Test Suites:
|
|
20
|
-
Tests:
|
|
20
|
+
Test Suites: 14 passed, 14 total
|
|
21
|
+
Tests: 37 passed, 37 total
|
|
21
22
|
Snapshots: 0 total
|
|
22
|
-
Time:
|
|
23
|
+
Time: 45.272 s
|
|
23
24
|
Ran all test suites.
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# arui-scripts
|
|
2
2
|
|
|
3
|
+
## 23.3.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#561](https://github.com/core-ds/arui-scripts/pull/561) [`98a2da5`](https://github.com/core-ds/arui-scripts/commit/98a2da587e1f0bc1d9b053cf509d96379b2e9af2) Thanks [@heymdall-legal](https://github.com/heymdall-legal)! - Добавлена настройка `jestTransformNodeModules` — список пакетов из `node_modules`, которые нужно прогонять
|
|
8
|
+
через трансформер при запуске тестов. Нужна для зависимостей, публикующихся только в формате ESM: рантайм jest
|
|
9
|
+
работает в CommonJS, а его нативный ESM-режим до сих пор требует `--experimental-vm-modules`.
|
|
10
|
+
По умолчанию `[]`, поведение не меняется.
|
|
11
|
+
|
|
12
|
+
## 23.2.0
|
|
13
|
+
|
|
14
|
+
### Minor Changes
|
|
15
|
+
|
|
16
|
+
- [#552](https://github.com/core-ds/arui-scripts/pull/552) [`3658e49`](https://github.com/core-ds/arui-scripts/commit/3658e49b0b752c592e738726aa8056569e28e19b) Thanks [@dmitrbrvsk](https://github.com/dmitrbrvsk)! - Добавлен пакет `create-arui-scripts-app` для генерации нового приложения через CLI. В `arui-scripts` CLI был переведен на commander.
|
|
17
|
+
|
|
3
18
|
## 23.1.0
|
|
4
19
|
|
|
5
20
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -3,7 +3,24 @@ ARUI-scripts
|
|
|
3
3
|
|
|
4
4
|
Простой и гибкий инструмент для одновременной сборки клиентской и серверной части react-приложений.
|
|
5
5
|
|
|
6
|
+
Быстрый старт
|
|
7
|
+
|
|
8
|
+
===
|
|
9
|
+
|
|
10
|
+
Самый быстрый способ начать - запустить интерактивный CLI [`create-arui-scripts-app`](../create-arui-scripts-app/README.md):
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npx create-arui-scripts-app my-app
|
|
14
|
+
cd my-app
|
|
15
|
+
yarn
|
|
16
|
+
yarn start
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
CLI `arui-scripts` поддерживает глобальные флаги `--help`, `--version` и справку по командам
|
|
20
|
+
`arui-scripts <команда> --help`. Подробнее в [CLI](docs/cli.md).
|
|
21
|
+
|
|
6
22
|
Использование
|
|
23
|
+
|
|
7
24
|
===
|
|
8
25
|
|
|
9
26
|
0. Пакет требует использовать следующие версии:
|
|
@@ -19,12 +36,15 @@ ARUI-scripts
|
|
|
19
36
|
```bash
|
|
20
37
|
yarn add arui-scripts --dev
|
|
21
38
|
```
|
|
39
|
+
|
|
22
40
|
или
|
|
41
|
+
|
|
23
42
|
```bash
|
|
24
43
|
npm install arui-scripts --save-dev
|
|
25
44
|
```
|
|
26
45
|
|
|
27
46
|
2. Создайте необходимые файлы
|
|
47
|
+
|
|
28
48
|
- `src/index.{js,jsx,ts,tsx}` - входная точка для клиентского приложения.
|
|
29
49
|
- `src/server/index.{js,jsx,tsx}` - входная точка для серверного приложения.
|
|
30
50
|
Если нужен только клиент, смотреть [Режим clientOnly](./docs/client-only.md).
|
|
@@ -44,8 +64,11 @@ npm install arui-scripts --save-dev
|
|
|
44
64
|
3. Используйте команды из `arui-scripts`!
|
|
45
65
|
|
|
46
66
|
Документация
|
|
67
|
+
|
|
47
68
|
===
|
|
48
69
|
- [Список актуальных версий docker-образов](../alpine-node-nginx/README.md)
|
|
70
|
+
- [Генерация проекта (`create-arui-scripts-app`)](../create-arui-scripts-app/README.md)
|
|
71
|
+
- [CLI](docs/cli.md)
|
|
49
72
|
- [Настройки](docs/settings.md)
|
|
50
73
|
- [Команды](docs/commands.md)
|
|
51
74
|
- [Примеры входных точек](docs/examples.md)
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable global-require */
|
|
3
|
+
/* eslint import/no-dynamic-require: 0 */
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.commands = void 0;
|
|
6
|
+
exports.commands = [
|
|
7
|
+
{
|
|
8
|
+
name: 'start',
|
|
9
|
+
description: 'Dev сервер для клиента и серверный код в watch режиме',
|
|
10
|
+
load: () => require('../commands/start'),
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
name: 'start:prod',
|
|
14
|
+
description: 'То же, что команда start, но с production конфигурацией rspack',
|
|
15
|
+
load: () => require('../commands/start-prod'),
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: 'build',
|
|
19
|
+
description: 'Production сборка клиентского и серверного кода',
|
|
20
|
+
load: () => require('../commands/build'),
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: 'docker-build',
|
|
24
|
+
description: 'Production сборка, создание docker образа и пуш в registry',
|
|
25
|
+
help: [
|
|
26
|
+
'Имя образа формируется как {dockerRegistry}/{name}:{version}.',
|
|
27
|
+
'name и version по умолчанию берутся из package.json, но их можно переопределить:',
|
|
28
|
+
' arui-scripts docker-build name=container-name version=0.1-beta',
|
|
29
|
+
].join('\n'),
|
|
30
|
+
passthrough: true,
|
|
31
|
+
load: () => require('../commands/docker-build'),
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'docker-build:compiled',
|
|
35
|
+
description: 'Как docker-build, но использует уже скомпилированный код из папки .build (для CI/CD)',
|
|
36
|
+
help: [
|
|
37
|
+
'Поддерживает те же опции, что и docker-build (name=, version=).',
|
|
38
|
+
'Внимание: не работает в clientOnly-режиме.',
|
|
39
|
+
].join('\n'),
|
|
40
|
+
passthrough: true,
|
|
41
|
+
load: () => require('../commands/docker-build-compiled'),
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: 'test',
|
|
45
|
+
description: 'Запускает jest с конфигурацией arui-scripts',
|
|
46
|
+
help: 'Все аргументы после команды пробрасываются в jest (например: arui-scripts test --watch).',
|
|
47
|
+
passthrough: true,
|
|
48
|
+
load: () => require('../commands/test'),
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: 'test:vitest',
|
|
52
|
+
description: 'Запускает unit тесты через vitest',
|
|
53
|
+
help: [
|
|
54
|
+
'Использует vitest.config.* из корня проекта, иначе конфигурацию arui-scripts.',
|
|
55
|
+
'Все аргументы после команды пробрасываются в vitest.',
|
|
56
|
+
].join('\n'),
|
|
57
|
+
passthrough: true,
|
|
58
|
+
load: () => require('../commands/test-vitest'),
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
name: 'ensure-yarn',
|
|
62
|
+
description: 'Завершается с кодом 1, если проект запущен не через yarn',
|
|
63
|
+
load: () => require('../commands/ensure-yarn'),
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: 'archive-build',
|
|
67
|
+
description: 'Собирает tar-архив с production-сборкой (.build, node_modules, package.json, config)',
|
|
68
|
+
load: () => require('../commands/archive-build'),
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: 'bundle-analyze',
|
|
72
|
+
description: 'Запускает webpack-bundle-analyzer и rsdoctor для анализа бандла и сборки',
|
|
73
|
+
load: () => require('../commands/bundle-analyze'),
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
name: 'changelog',
|
|
77
|
+
description: 'postchangelog-хук standard-version: формирует описание версии в CHANGELOG.md',
|
|
78
|
+
load: () => require('../commands/changelog'),
|
|
79
|
+
},
|
|
80
|
+
];
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable global-require */
|
|
3
|
+
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
4
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6
|
+
};
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.createCli = createCli;
|
|
9
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
+
const commander_1 = require("commander");
|
|
11
|
+
const commands_registry_1 = require("./commands-registry");
|
|
12
|
+
const { version } = require('../../package.json');
|
|
13
|
+
function createCli() {
|
|
14
|
+
const program = new commander_1.Command('arui-scripts');
|
|
15
|
+
program
|
|
16
|
+
.description('Инструмент для сборки клиентской и серверной части react приложений')
|
|
17
|
+
.version(version, '-v, --version', 'Показать версию')
|
|
18
|
+
.showHelpAfterError('(используйте --help для списка команд)')
|
|
19
|
+
.showSuggestionAfterError();
|
|
20
|
+
program.addHelpText('beforeAll', ({ command }) => command === program
|
|
21
|
+
? `\n ${chalk_1.default.bgCyan.black(' arui-scripts ')} ${chalk_1.default.dim(`v${version}`)}\n`
|
|
22
|
+
: '');
|
|
23
|
+
commands_registry_1.commands.forEach((cmd) => {
|
|
24
|
+
const command = program.command(cmd.name).description(cmd.description).action(cmd.load);
|
|
25
|
+
if (cmd.passthrough) {
|
|
26
|
+
// --help/-h пробрасываем в jest/vitest/docker, а не показываем help commander.
|
|
27
|
+
command.allowUnknownOption().allowExcessArguments().helpOption(false);
|
|
28
|
+
}
|
|
29
|
+
if (cmd.help) {
|
|
30
|
+
command.addHelpText('after', `\n${chalk_1.default.dim(cmd.help)}`);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
return program;
|
|
34
|
+
}
|
package/build/bin/index.js
CHANGED
|
@@ -1,26 +1,5 @@
|
|
|
1
1
|
#! /usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
|
-
/* eslint-disable global-require */
|
|
4
|
-
/* eslint import/no-dynamic-require: 0 */
|
|
5
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
'start:prod': () => require('../commands/start-prod'),
|
|
9
|
-
build: () => require('../commands/build'),
|
|
10
|
-
'docker-build': () => require('../commands/docker-build'),
|
|
11
|
-
'docker-build:compiled': () => require('../commands/docker-build-compiled'),
|
|
12
|
-
test: () => require('../commands/test'),
|
|
13
|
-
'test:vitest': () => require('../commands/test-vitest'),
|
|
14
|
-
'ensure-yarn': () => require('../commands/ensure-yarn'),
|
|
15
|
-
'archive-build': () => require('../commands/archive-build'),
|
|
16
|
-
'bundle-analyze': () => require('../commands/bundle-analyze'),
|
|
17
|
-
changelog: () => require('../commands/changelog'),
|
|
18
|
-
};
|
|
19
|
-
const command = process.argv[2];
|
|
20
|
-
if (!command || !commands[command]) {
|
|
21
|
-
console.error(`Please specify one of available commands: ${Object.keys(commands)
|
|
22
|
-
.map((c) => `"${c}"`)
|
|
23
|
-
.join(' ')}`);
|
|
24
|
-
process.exit(-1);
|
|
25
|
-
}
|
|
26
|
-
commands[command]();
|
|
4
|
+
const create_cli_1 = require("./create-cli");
|
|
5
|
+
(0, create_cli_1.createCli)().parse(process.argv);
|
|
@@ -58,6 +58,7 @@ function getDefaultAppConfig() {
|
|
|
58
58
|
installServerSourceMaps: false,
|
|
59
59
|
disableDevRspackTypecheck: true,
|
|
60
60
|
jestCodeTransformer: 'swc',
|
|
61
|
+
jestTransformNodeModules: [],
|
|
61
62
|
collectCoverage: process.env.NODE_ENV === 'cypress' || process.env.USE_ISTANBUL === 'enabled',
|
|
62
63
|
// image processing
|
|
63
64
|
dataUrlMaxSize: 1536,
|
|
@@ -48,6 +48,7 @@ export type AppConfigs = {
|
|
|
48
48
|
/** @deprecated используйте `disableDevRspackTypecheck` */
|
|
49
49
|
disableDevWebpackTypecheck?: boolean;
|
|
50
50
|
jestCodeTransformer: 'babel' | 'tsc' | 'swc';
|
|
51
|
+
jestTransformNodeModules: string[];
|
|
51
52
|
collectCoverage: boolean;
|
|
52
53
|
dataUrlMaxSize?: number;
|
|
53
54
|
imageMinimizer?: {
|
|
@@ -9,6 +9,9 @@ const { pathsToModuleNameMapper } = require('ts-jest');
|
|
|
9
9
|
const { parseConfigFileTextToJson } = require('typescript');
|
|
10
10
|
const { swcJestConfig } = require('../swc');
|
|
11
11
|
const { configs } = require('../app-configs');
|
|
12
|
+
// Значения по умолчанию из самого jest, см. https://jestjs.io/docs/configuration#transformignorepatterns-arraystring
|
|
13
|
+
const PNP_TRANSFORM_IGNORE_PATTERN = '\\.pnp\\.[^\\\\/]+$';
|
|
14
|
+
const DEFAULT_TRANSFORM_IGNORE_PATTERNS = ['/node_modules/', PNP_TRANSFORM_IGNORE_PATTERN];
|
|
12
15
|
module.exports = {
|
|
13
16
|
testRegex: 'src/.*(((/__test__/|/__tests__/).*)|(test|spec|tests)).(jsx?|tsx?)$',
|
|
14
17
|
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'],
|
|
@@ -22,6 +25,7 @@ module.exports = {
|
|
|
22
25
|
'^.+\\.tsx?$': getTsTransformer(),
|
|
23
26
|
'^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': require.resolve('./file-transform'),
|
|
24
27
|
},
|
|
28
|
+
transformIgnorePatterns: getTransformIgnorePatterns(),
|
|
25
29
|
moduleNameMapper: Object.assign({
|
|
26
30
|
// replace all css files with simple empty exports
|
|
27
31
|
'\\.css$': require.resolve('./css-mock') }, pathsToModuleNameMapper(getPathMapping(), { prefix: '<rootDir>/' })),
|
|
@@ -56,3 +60,17 @@ function getJsTransformer() {
|
|
|
56
60
|
}
|
|
57
61
|
return require.resolve('./babel-transform');
|
|
58
62
|
}
|
|
63
|
+
function getTransformIgnorePatterns() {
|
|
64
|
+
const packages = configs.jestTransformNodeModules;
|
|
65
|
+
if (!packages || packages.length === 0) {
|
|
66
|
+
return DEFAULT_TRANSFORM_IGNORE_PATTERNS;
|
|
67
|
+
}
|
|
68
|
+
const list = packages.map((name) => name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join('|');
|
|
69
|
+
// Игнорируем всё в node_modules, кроме путей, содержащих /node_modules/<пакет>/.
|
|
70
|
+
// Вхождение ищется в любом месте пути, чтобы работали вложенные установки
|
|
71
|
+
// вида node_modules/foo/node_modules/uuid.
|
|
72
|
+
return [
|
|
73
|
+
`^(?!.*[\\\\/]node_modules[\\\\/](?:${list})[\\\\/]).*[\\\\/]node_modules[\\\\/]`,
|
|
74
|
+
PNP_TRANSFORM_IGNORE_PATTERN,
|
|
75
|
+
];
|
|
76
|
+
}
|
package/docs/cli.md
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# CLI arui-scripts
|
|
2
|
+
|
|
3
|
+
`arui-scripts` предоставляет CLI для сборки, запуска и тестирования react-приложений.
|
|
4
|
+
После установки пакета команды доступны через `arui-scripts <команда>`
|
|
5
|
+
|
|
6
|
+
Для генерации нового проекта используйте отдельный пакет
|
|
7
|
+
[`create-arui-scripts-app`](../../create-arui-scripts-app/README.md):
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npx create-arui-scripts-app my-app
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Глобальные флаги
|
|
14
|
+
|
|
15
|
+
- `arui-scripts --help` — список всех команд с описаниями.
|
|
16
|
+
- `arui-scripts --version` (`-v`) - версия пакета.
|
|
17
|
+
- `arui-scripts <команда> --help` - справка по конкретной команде.
|
|
18
|
+
|
|
19
|
+
## Команды
|
|
20
|
+
|
|
21
|
+
Полный список и описание — в [docs/commands.md](commands.md):
|
|
22
|
+
`start`, `start:prod`, `build`, `docker-build`, `docker-build:compiled`, `test`, `test:vitest`,
|
|
23
|
+
`archive-build`, `bundle-analyze`, `ensure-yarn`, `changelog`.
|
package/docs/commands.md
CHANGED
|
@@ -1,33 +1,45 @@
|
|
|
1
|
-
Доступные команды
|
|
1
|
+
# Доступные команды
|
|
2
|
+
|
|
2
3
|
===
|
|
3
4
|
|
|
4
|
-
|
|
5
|
+
CLI `arui-scripts` поддерживает глобальные флаги:
|
|
6
|
+
|
|
7
|
+
- `arui-scripts --help` - список всех команд с описаниями.
|
|
8
|
+
- `arui-scripts --version` (`-v`) - версия пакета.
|
|
9
|
+
- `arui-scripts <command> --help` - справка по конкретной команде.
|
|
10
|
+
|
|
11
|
+
## start
|
|
12
|
+
|
|
5
13
|
Запускает dev-сервер для клиентского кода и серверный код в watch-режиме.
|
|
6
14
|
|
|
7
15
|
**Как запустить?**
|
|
16
|
+
|
|
8
17
|
```bash
|
|
9
18
|
arui-scripts start
|
|
10
19
|
```
|
|
11
20
|
|
|
12
|
-
|
|
21
|
+
## start:prod
|
|
22
|
+
|
|
13
23
|
Запускает dev-сервер для клиентского кода и серверный код в watch-режиме. При этом использует production-конфигурацию для rspack.
|
|
14
24
|
Может быть полезна для сбора метрик производительности.
|
|
15
25
|
|
|
16
26
|
**Как запустить?**
|
|
27
|
+
|
|
17
28
|
```bash
|
|
18
29
|
arui-scripts start:prod
|
|
19
30
|
```
|
|
20
31
|
|
|
21
|
-
|
|
32
|
+
## build
|
|
33
|
+
|
|
22
34
|
Собирает клиентский и серверный код в production-режиме.
|
|
23
35
|
|
|
24
36
|
**Как запустить?**
|
|
37
|
+
|
|
25
38
|
```bash
|
|
26
39
|
arui-scripts build
|
|
27
40
|
```
|
|
28
41
|
|
|
29
|
-
|
|
30
|
-
Команда `arui-scripts test` внутри запускает jest с дополнительной конфигурацией.
|
|
42
|
+
## test
|
|
31
43
|
|
|
32
44
|
Конфигурация включает в себя:
|
|
33
45
|
- Использование `jest-snapshot-serializer-class-name-to-string` для правильной работы с `cn`
|
|
@@ -36,6 +48,8 @@ arui-scripts build
|
|
|
36
48
|
- Компиляцию .ts/.tsx файлов используя tsc
|
|
37
49
|
- Замену импортов остальных типов файлов на импорт строк с названием файла
|
|
38
50
|
|
|
51
|
+
Команда `arui-scripts test` внутри запускает jest с дополнительной конфигурацией.
|
|
52
|
+
|
|
39
53
|
По умолчанию под маску для поиска тестов попадают все файлы `*test*.(js|jsx|ts|tsx)`, `*spec*.((js|jsx|ts|tsx))`, `*/__test__/*.(js|jsx|ts|tsx)`.
|
|
40
54
|
|
|
41
55
|
Вы можете переопределять любые настройки jest в `package.json`, [документация](https://facebook.github.io/jest/docs/en/configuration.html).
|
|
@@ -53,11 +67,13 @@ _package.json_
|
|
|
53
67
|
```
|
|
54
68
|
|
|
55
69
|
**Как запустить?**
|
|
70
|
+
|
|
56
71
|
```bash
|
|
57
72
|
arui-scripts test
|
|
58
73
|
```
|
|
59
74
|
|
|
60
|
-
|
|
75
|
+
## test:vitest
|
|
76
|
+
|
|
61
77
|
Команда `arui-scripts test:vitest` запускает unit тесты через [Vitest](https://vitest.dev/).
|
|
62
78
|
|
|
63
79
|
Если в корне проекта есть `vitest.config.ts` (или `.js`, `.mjs`, `.cjs`), то используется он.
|
|
@@ -91,10 +107,12 @@ export default mergeConfig(aruiConfig, defineConfig({
|
|
|
91
107
|
arui-scripts test:vitest
|
|
92
108
|
```
|
|
93
109
|
|
|
94
|
-
|
|
110
|
+
## docker-build
|
|
111
|
+
|
|
95
112
|
Собирает клиентский и серверный код в production-режиме, создает docker-образ и пушит его в docker-репозиторий.
|
|
96
113
|
|
|
97
114
|
**Как запустить?**
|
|
115
|
+
|
|
98
116
|
```bash
|
|
99
117
|
arui-scripts docker-build
|
|
100
118
|
```
|
|
@@ -115,7 +133,7 @@ yarn будет использоваться когда в рутовой пап
|
|
|
115
133
|
docker run -p 8080:8080 container-name:version ./start.sh
|
|
116
134
|
```
|
|
117
135
|
|
|
118
|
-
|
|
136
|
+
## docker-build:compiled
|
|
119
137
|
|
|
120
138
|
Команда `arui-scripts docker-build:compiled` во многом аналогична `docker-build`, но вместо сборки проекта использует уже скомпилированный в папку `.build` код.
|
|
121
139
|
При этом в контейнер будут устанавливаться только production зависимости.
|
|
@@ -130,11 +148,12 @@ Dockerfile при этом будет сгенерирован автомати
|
|
|
130
148
|
Локальный `Dockerfile` в корне проекта в данном случае полностью игнорируется.
|
|
131
149
|
|
|
132
150
|
**Как запустить?**
|
|
151
|
+
|
|
133
152
|
```bash
|
|
134
153
|
arui-scripts docker-build:compiled
|
|
135
154
|
```
|
|
136
155
|
|
|
137
|
-
|
|
156
|
+
## archive-build
|
|
138
157
|
|
|
139
158
|
Собирает архив с production сборкой.
|
|
140
159
|
|
|
@@ -147,11 +166,12 @@ yarn будет использоваться когда в рутовой пап
|
|
|
147
166
|
Итоговый архив будет содержать в себе `.build`, `node_modules`, `package.json` и `config` папки вашего проекта.
|
|
148
167
|
|
|
149
168
|
**Как запустить?**
|
|
169
|
+
|
|
150
170
|
```bash
|
|
151
171
|
arui-scripts archive-build
|
|
152
172
|
```
|
|
153
173
|
|
|
154
|
-
|
|
174
|
+
## bundle-analyze
|
|
155
175
|
|
|
156
176
|
Запускает [webpack-bundle-analyzer](https://www.npmjs.com/package/webpack-bundle-analyzer) и [rsdoctor](https://rsdoctor.dev/) для анализа бандла и сборки.
|
|
157
177
|
Так же при запуске будет генерироваться [stats-файл](https://webpack.js.org/api/stats/), который можно использовать в
|
package/docs/settings.md
CHANGED
|
@@ -271,6 +271,28 @@ const packageSettings = {
|
|
|
271
271
|
- `swc` - для всего кода будет использоваться `@swc/jest`.
|
|
272
272
|
Swc более строго следует спецификациям и [не дает возможности](https://github.com/swc-project/swc/issues/5059) делать `spyOn` для экспортов из esm модулей.
|
|
273
273
|
|
|
274
|
+
#### jestTransformNodeModules
|
|
275
|
+
Список пакетов из `node_modules`, которые нужно прогонять через трансформер при запуске тестов. По умолчанию `[]`.
|
|
276
|
+
|
|
277
|
+
```js
|
|
278
|
+
module.exports = {
|
|
279
|
+
jestTransformNodeModules: ['uuid', '@scope/some-package'],
|
|
280
|
+
};
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
Нужно для пакетов, которые публикуются только в формате ESM (`"type": "module"` без CommonJS сборки).
|
|
284
|
+
По умолчанию jest не трансформирует ничего внутри `node_modules`, а его рантайм — CommonJS: он оборачивает
|
|
285
|
+
файл в `function(module, exports, require, ...)` и выполняет его, поэтому на ESM-коде падает с
|
|
286
|
+
`SyntaxError: Unexpected token 'export'`. Собственный `require(esm)` из Node тут не помогает — jest его не использует,
|
|
287
|
+
а нативный ESM-режим самого jest до сих пор требует запуска ноды с `--experimental-vm-modules`.
|
|
288
|
+
|
|
289
|
+
Настройка добавляет перечисленные пакеты в исключения `transformIgnorePatterns`, так что их код будет обработан
|
|
290
|
+
тем же трансформером, который выбран в [jestCodeTransformer](#jestcodetransformer). Вложенные установки
|
|
291
|
+
(`node_modules/foo/node_modules/uuid`) тоже учитываются.
|
|
292
|
+
|
|
293
|
+
Если нужно что-то более тонкое, `transformIgnorePatterns` по-прежнему можно задать напрямую — через ключ `jest`
|
|
294
|
+
в `package.json` или через `jest.config.js`, настройки приложения имеют приоритет над пресетом.
|
|
295
|
+
|
|
274
296
|
#### collectCoverage
|
|
275
297
|
Добавлять ли инструменты для сборки coverage при сборке. По умолчанию определяется по env переменным - будет выставлено в `true` если `NODE_ENV = 'cypress'` или `USE_ISTANBUL = 'enabled'`.
|
|
276
298
|
Сбор coverage не будет работать при использовании `codeLoader=tsc`.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "arui-scripts",
|
|
3
|
-
"version": "23.
|
|
3
|
+
"version": "23.3.0",
|
|
4
4
|
"main": "./build/index.js",
|
|
5
5
|
"typings": "./build/index.d.ts",
|
|
6
6
|
"exports": {
|
|
@@ -63,6 +63,7 @@
|
|
|
63
63
|
"brotli-dict": "^1.1.4",
|
|
64
64
|
"case-sensitive-paths-webpack-plugin": "2.4.0",
|
|
65
65
|
"chalk": "^2.4.2",
|
|
66
|
+
"commander": "^12",
|
|
66
67
|
"compression-webpack-plugin": "9.2.0",
|
|
67
68
|
"core-js": "3.32.0",
|
|
68
69
|
"css-loader": "6.8.1",
|
|
@@ -115,7 +116,7 @@
|
|
|
115
116
|
"style-loader": "3.3.3",
|
|
116
117
|
"swc-loader": "^0.2.6",
|
|
117
118
|
"swc-plugin-coverage-instrument": "0.0.32",
|
|
118
|
-
"tar": "7.5.
|
|
119
|
+
"tar": "7.5.21",
|
|
119
120
|
"terser-webpack-plugin": "5.3.14",
|
|
120
121
|
"ts-checker-rspack-plugin": "^1.3.0",
|
|
121
122
|
"ts-jest": "29.1.0",
|
|
@@ -151,6 +152,7 @@
|
|
|
151
152
|
},
|
|
152
153
|
"scripts": {
|
|
153
154
|
"build": "sh bin/build.sh",
|
|
155
|
+
"cli": "node build/bin/index.js",
|
|
154
156
|
"test": "jest",
|
|
155
157
|
"test:vitest": "vitest",
|
|
156
158
|
"lint:scripts": "arui-presets-lint scripts",
|