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.
@@ -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/configs/app-configs/__tests__/update-with-presets.tests.ts (23.818 s)
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 (15.828 s)
16
- PASS src/configs/util/__tests__/find-plugin.tests.ts (41.64 s)
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: 13 passed, 13 total
20
- Tests: 31 passed, 31 total
20
+ Test Suites: 14 passed, 14 total
21
+ Tests: 37 passed, 37 total
21
22
  Snapshots: 0 total
22
- Time: 43.267 s
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,8 @@
1
+ export type CliCommand = {
2
+ name: string;
3
+ description: string;
4
+ help?: string;
5
+ passthrough?: boolean;
6
+ load: () => void;
7
+ };
8
+ export declare const commands: CliCommand[];
@@ -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,2 @@
1
+ import { Command } from 'commander';
2
+ export declare function createCli(): Command;
@@ -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
+ }
@@ -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 commands = {
7
- start: () => require('../commands/start'),
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?: {
@@ -10,6 +10,7 @@ export let transform: {
10
10
  '^.+\\.tsx?$': string | (string | import("@swc/types").Options)[];
11
11
  '^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': string;
12
12
  };
13
+ export let transformIgnorePatterns: string[];
13
14
  export let moduleNameMapper: {
14
15
  '\\.css$': string;
15
16
  };
@@ -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
- ### start
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
- ### start:prod
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
- ### build
32
+ ## build
33
+
22
34
  Собирает клиентский и серверный код в production-режиме.
23
35
 
24
36
  **Как запустить?**
37
+
25
38
  ```bash
26
39
  arui-scripts build
27
40
  ```
28
41
 
29
- ### test
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
- ### test:vitest
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
- ### docker-build
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
- ### docker-build:compiled
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
- ### archive-build
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
- ### bundle-analyze
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.1.0",
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.16",
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",