@mirta/rollup 0.3.5 → 0.4.1

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/README.md CHANGED
@@ -3,20 +3,110 @@
3
3
  [![en](https://img.shields.io/badge/lang-en-olivedrab.svg?style=flat-square)](https://github.com/wb-mirta/core/blob/latest/packages/mirta-rollup/README.md)
4
4
  [![ru](https://img.shields.io/badge/lang-ru-dimgray.svg?style=flat-square)](https://github.com/wb-mirta/core/blob/latest/packages/mirta-rollup/README.ru.md)
5
5
  [![NPM Version](https://img.shields.io/npm/v/@mirta/rollup?style=flat-square)](https://npmjs.com/package/@mirta/rollup)
6
+ [![NPM Downloads](https://img.shields.io/npm/dm/@mirta/rollup?style=flat-square&logo=npm)](https://npmjs.com/package/@mirta/rollup)
6
7
 
7
- Supplies a ready-to-use Rollup configuration for compiling wb-rules projects.
8
+ > Zero-config Rollup configurations with customization support,
9
+ > plus public APIs for loading `.env` files and resolving project context with workspace support.
10
+
11
+ `@mirta/rollup` is the **core build tool** in the MIRTA ecosystem.
12
+ It provides:
13
+ - Zero-config Rollup presets for building projects for Wiren Board controllers and for publishing to NPM.
14
+ - Config factories for customization.
15
+ - Utilities for loading environment variables.
16
+ - Project context resolution based on `@mirta/workspace`.
17
+
18
+ Used by both the Mirta framework itself and projects generated via `create-mirta`.
19
+ **Not intended for execution in Duktape on Wiren Board controllers.**
20
+
21
+ ## 🧩 Build Modes
22
+
23
+ ### 1. `@mirta/rollup/config` — Build for Controller
24
+
25
+ For automation projects based on [wb-rules](https://github.com/wirenboard/wb-rules), running on Wiren Board controllers.
26
+
27
+ #### Usage
8
28
 
9
- ## Installation
10
29
  ```sh
30
+ ## Installation
11
31
  pnpm add -D @mirta/rollup
32
+
33
+ # Build without rollup.config.mjs
34
+ rollup -c node:@mirta/rollup/config
35
+
36
+ ```
37
+
38
+ #### Features
39
+
40
+ - Input: `src/wb-rules/*.[jt]s`
41
+ - Format: `cjs`
42
+ - Compatibility: `Babel` + `@mirta/polyfills`
43
+ - Automatic `require()` adaptation via internal `wb-rules-imports` plugin
44
+ - Environment variables:
45
+ - Loaded from `.env*` files
46
+ - Filtered by prefixes: `MIRTA_`, `APP_`
47
+ - Monorepo support: uses `@mirta/workspace` for correct dependency resolution
48
+
49
+ ✅ Automatically added as a devDependency to projects generated by `create-mirta` — used for their build.
50
+
51
+ ### 2. `@mirta/rollup/config-package` — NPM Package Build
52
+
53
+ For projects distributed via NPM as modular components of the Mirta ecosystem.
54
+
55
+ #### Usage
56
+
57
+ ```sh
58
+ # Without rollup.config.mjs
59
+ rollup -c node:@mirta/rollup/config-package
60
+
61
+ # For CLI tools without exports
62
+ rollup -c node:@mirta/rollup/config-package --config-skip-exports
63
+
12
64
  ```
13
- ## Usage
14
- ```mjs
15
- // rollup.config.mjs
16
- import { defineConfig } from '@mirta/rollup'
17
65
 
66
+ #### Features
67
+
68
+ - Input: `src/index.ts`
69
+ - Format: `es` → `.mjs`
70
+ - Validation: ensures `src/` ↔ `package.json#exports` alignment
71
+ - Type generation: `.d.mts` via `rollup-plugin-dts` with alias fixing
72
+ - External dependencies: correctly resolved using `@mirta/workspace`
73
+
74
+ ✅ Automatically added to packages generated by create-mirta with the "distributable module" template.
75
+
76
+ ## 🛠 Configuration Factories (for customization)
77
+
78
+ For full control, use direct functions:
79
+
80
+ ```ts
81
+ import { defineConfig, definePackageConfig } from '@mirta/rollup'
82
+
83
+ // For controller projects
18
84
  export default defineConfig({
19
- dotenv: {
20
- prefix: '^APP_'
21
- }
22
- })
85
+ cwd: process.cwd(),
86
+ external: [/^lodash/],
87
+ envLoader: {
88
+ prefix: 'APP_',
89
+ },
90
+ })
91
+
92
+ // For packages
93
+ export default definePackageConfig({
94
+ cwd: process.cwd(),
95
+ input: 'src/main.ts',
96
+ external: ['some-legacy-dep'],
97
+ })
98
+
99
+ ```
100
+ ### Advantages
101
+ - Follows the framework's build standards
102
+ - Allows extending default behavior
103
+ - Ideal for complex projects
104
+
105
+ ## 🔄 Architectural Role
106
+
107
+ The package ensures **consistency** and **predictability** across the entire ecosystem:
108
+
109
+ - All framework packages are built using `@mirta/rollup`.
110
+ - Projects generated by `create-mirta` use the `@mirta/rollup/config` and `@mirta/rollup/config-package` configurations, ensuring a unified build standard for `wb-rules`.
111
+
112
+ This creates a **closed trust chain**: the tool that generates a project has itself gone through the same process as its output.
package/README.ru.md CHANGED
@@ -3,20 +3,108 @@
3
3
  [![en](https://img.shields.io/badge/lang-en-dimgray.svg?style=flat-square)](https://github.com/wb-mirta/core/blob/latest/packages/mirta-rollup/README.md)
4
4
  [![ru](https://img.shields.io/badge/lang-ru-olivedrab.svg?style=flat-square)](https://github.com/wb-mirta/core/blob/latest/packages/mirta-rollup/README.ru.md)
5
5
  [![NPM Version](https://img.shields.io/npm/v/@mirta/rollup?style=flat-square)](https://npmjs.com/package/@mirta/rollup)
6
+ [![NPM Downloads](https://img.shields.io/npm/dm/@mirta/rollup?style=flat-square&logo=npm)](https://npmjs.com/package/@mirta/rollup)
6
7
 
7
- Предоставляет заранее настроенную конфигурацию Rollup для сборки проектов wb-rules.
8
+ > Готовые конфигурации сборки с zero-config и возможностью кастомизации,
9
+ > а также публичные API для загрузки `.env`-файлов и определения контекста проекта.
8
10
 
9
- ## Установка
10
- ```sh
11
+ `@mirta/rollup` — это **основной инструмент сборки** экосистемы на базе фреймворка Мирта.
12
+
13
+ Он предоставляет:
14
+ - Готовые zero-config конфигурации для сборки под контроллеры Wiren Board и для публикации на NPM.
15
+ - Фабрики конфигураций для кастомизации.
16
+ - Утилиты для загрузки переменных окружения.
17
+ - Работу с контекстом проекта — на основе `@mirta/workspace`.
18
+
19
+ Используется как самим фреймворком, так и проектами, созданными через `create-mirta`.<br/>
20
+ **Не предназначен для выполнения в среде Duktape на контроллерах Wiren Board.**
21
+
22
+ ## 🧩 Режимы сборки
23
+
24
+ ### 1. `@mirta/rollup/config` — сборка под контроллер
25
+
26
+ Для проектов автоматизации на базе [wb-rules](https://github.com/wirenboard/wb-rules), исполняемых на контроллерах Wiren Board.
27
+
28
+ #### Использование
29
+
30
+ ```bash
31
+ # Установка
11
32
  pnpm add -D @mirta/rollup
33
+
34
+ # Сборка без rollup.config.mjs
35
+ rollup -c node:@mirta/rollup/config
12
36
  ```
13
- ## Использование
14
- ```mjs
15
- // rollup.config.mjs
16
- import { defineConfig } from '@mirta/rollup'
37
+ #### Особенности
38
+
39
+ - Вход: `src/wb-rules/*.[jt]s`;
40
+ - Формат: `cjs`;
41
+ - Совместимость: Babel + `@mirta/polyfills`;
42
+ - Автоматическая адаптация `require()` через внутренний плагин `wb-rules-imports`;
43
+ - Переменные окружения:
44
+ - загружаются из `.env*` файлов;
45
+ - фильтруются по префиксам: `MIRTA_`, `APP_`;
46
+ - Поддержка монорепозиториев: использует `@mirta/workspace` для корректного разрешения зависимостей.
47
+
48
+ ✅ Автоматически добавляется в проекты, сгенерированные через `create-mirta`, как `devDependency` — используется для их сборки.
49
+
50
+ ### 2. `@mirta/rollup/config-package` — сборка в NPM-пакеты
51
+
52
+ Для проектов, распространяемых через NPM в виде подключаемых модулей экосистемы Мирта.
53
+
54
+ #### Использование
55
+
56
+ ```sh
57
+ # Без rollup.config.mjs
58
+ rollup -c node:@mirta/rollup/config-package
17
59
 
60
+ # При сборке инструментов командной строки без exports
61
+ rollup -c node:@mirta/rollup/config-package --config-skip-exports
62
+
63
+ ```
64
+ #### Особенности
65
+
66
+ - Вход: `src/index.ts`;
67
+ - Формат: `es` → `.mjs`;
68
+ - Валидация соответствия `src/` ↔ `package.json#exports`;
69
+ - Генерация типов: `.d.mts` через `rollup-plugin-dts` с исправлением алиасов;
70
+ - Внешние зависимости: корректно определяются с помощью `@mirta/workspace`.
71
+
72
+ ✅ Автоматически добавляется в пакеты, сгенерированные через `create-mirta` с шаблоном "распространяемый модуль".
73
+
74
+ ## 🛠 Фабрики конфигураций (для кастомизации)
75
+
76
+ Для полного контроля используйте прямые функции:
77
+
78
+ ```ts
79
+ import { defineConfig, definePackageConfig } from '@mirta/rollup'
80
+
81
+ // Для проекта под контроллер
18
82
  export default defineConfig({
19
- dotenv: {
20
- prefix: '^APP_'
21
- }
22
- })
83
+ cwd: process.cwd(),
84
+ external: [/^lodash/],
85
+ envLoader: {
86
+ prefix: 'APP_',
87
+ },
88
+ })
89
+
90
+ // Для пакета
91
+ export default definePackageConfig({
92
+ cwd: process.cwd(),
93
+ input: 'src/main.ts',
94
+ external: ['some-legacy-dep'],
95
+ })
96
+
97
+ ```
98
+ ### Преимущества
99
+ - Следуют стандартам сборки фреймворка Mirta;
100
+ - Позволяют расширять поведение по умолчанию;
101
+ - Идеальны для сложных проектов.
102
+
103
+ ## 🔄 Архитектурная роль
104
+
105
+ Пакет обеспечивает **консистентность** и **предсказуемость** на всех уровнях экосистемы:
106
+
107
+ - Все пакеты фреймворка собираются с помощью `@mirta/rollup`;
108
+ - Генерируемые `create-mirta` пакеты используют конфигурации `@mirta/rollup/config` и `@mirta/rollup/config-package`, обеспечивая единый стандарт сборки для `wb-rules`.
109
+
110
+ Так формируется **замкнутая цепочка доверия**: инструмент, создающий проект, сам прошёл через тот же процесс, что и результат.
@@ -0,0 +1,18 @@
1
+ import * as rollup from 'rollup';
2
+
3
+ /**
4
+ * Конфигурация Rollup по умолчанию, предназначенная
5
+ * для сборки распространяемых через NPM пакетов.
6
+ *
7
+ * @param args Объект с аргументами командной строки Rollup.
8
+ * Доступные ключи:
9
+ * - `--config-skip-exports` - пропускает валидацию соответствия между входными файлами и секцией `exports` в `package.json`.
10
+ *
11
+ * @returns Результат выполнения функции `definePackageConfig`
12
+ *
13
+ * @since 0.4.0
14
+ *
15
+ **/
16
+ declare function resolveConfig(args: Record<string, unknown>): rollup.RollupOptions[];
17
+
18
+ export { resolveConfig as default };
@@ -0,0 +1,36 @@
1
+ import { d as definePackageConfig } from './package.mjs';
2
+ import '@rollup/plugin-typescript';
3
+ import '@rollup/plugin-node-resolve';
4
+ import '@rollup/plugin-commonjs';
5
+ import '@rollup/plugin-replace';
6
+ import 'rollup-plugin-copy';
7
+ import 'rollup-plugin-dts';
8
+ import './errors.mjs';
9
+ import 'del';
10
+ import 'typescript';
11
+ import 'node:path';
12
+ import '@mirta/package';
13
+ import '@mirta/basics/array';
14
+
15
+ /**
16
+ * Конфигурация Rollup по умолчанию, предназначенная
17
+ * для сборки распространяемых через NPM пакетов.
18
+ *
19
+ * @param args Объект с аргументами командной строки Rollup.
20
+ * Доступные ключи:
21
+ * - `--config-skip-exports` - пропускает валидацию соответствия между входными файлами и секцией `exports` в `package.json`.
22
+ *
23
+ * @returns Результат выполнения функции `definePackageConfig`
24
+ *
25
+ * @since 0.4.0
26
+ *
27
+ **/
28
+ function resolveConfig(args) {
29
+ // Пропуск проверки секции экспорта.
30
+ const skipExports = args['config-skip-exports'] === true;
31
+ return definePackageConfig({
32
+ skipExports,
33
+ });
34
+ }
35
+
36
+ export { resolveConfig as default };
@@ -0,0 +1,12 @@
1
+ import * as rollup from 'rollup';
2
+
3
+ /**
4
+ * Конфигурация Rollup по умолчанию, предназначенная
5
+ * для сборки под контроллер Wiren Board.
6
+ *
7
+ * @since 0.4.0
8
+ *
9
+ **/
10
+ declare const _default: Promise<rollup.RollupOptions>;
11
+
12
+ export { _default as default };
@@ -0,0 +1,24 @@
1
+ import { d as defineRuntimeConfig } from './runtime.mjs';
2
+ import '@rollup/plugin-multi-entry';
3
+ import '@rollup/plugin-node-resolve';
4
+ import 'rollup-plugin-typescript2';
5
+ import '@rollup/plugin-replace';
6
+ import '@rollup/plugin-babel';
7
+ import '@mirta/env-loader';
8
+ import '@mirta/workspace';
9
+ import './errors.mjs';
10
+ import 'del';
11
+ import 'path';
12
+ import 'magic-string';
13
+ import 'node:path';
14
+
15
+ /**
16
+ * Конфигурация Rollup по умолчанию, предназначенная
17
+ * для сборки под контроллер Wiren Board.
18
+ *
19
+ * @since 0.4.0
20
+ *
21
+ **/
22
+ var config = defineRuntimeConfig();
23
+
24
+ export { config as default };
@@ -0,0 +1,185 @@
1
+ import { deleteAsync } from 'del';
2
+
3
+ function del(options = {}) {
4
+ const { hook = 'buildStart', runOnce = false, targets = [], verbose = false, } = options;
5
+ let isDeleted = false;
6
+ return {
7
+ name: 'del',
8
+ [hook]: async () => {
9
+ if (runOnce && isDeleted)
10
+ return;
11
+ const paths = await deleteAsync(targets, options);
12
+ if (verbose || options.dryRun) {
13
+ const message = options.dryRun
14
+ ? `Expected files and folders to be deleted: ${paths.length.toString()}`
15
+ : `Deleted files and folders: ${paths.length.toString()}`;
16
+ console.log(message);
17
+ if (paths.length)
18
+ paths.forEach((path) => {
19
+ console.log(path);
20
+ });
21
+ }
22
+ isDeleted = true;
23
+ },
24
+ };
25
+ }
26
+
27
+ /**
28
+ * Класс ошибки сборки, расширяющий стандартный Error.
29
+ *
30
+ * @since 0.3.5
31
+ *
32
+ **/
33
+ class BuildError extends Error {
34
+ /** Код ошибки для программной идентификации. */
35
+ code;
36
+ /**
37
+ * Приватный конструктор для создания экземпляра ошибки.
38
+ *
39
+ * @param message - Сообщение об ошибке
40
+ * @param code - Код ошибки
41
+ * @param scope - Область действия ошибки (по умолчанию '@mirta/rollup')
42
+ *
43
+ **/
44
+ constructor(message, code, scope = '@mirta/rollup') {
45
+ super(`[${scope}] ${message}`);
46
+ this.name = 'BuildError';
47
+ this.code = code;
48
+ if ('captureStackTrace' in Error)
49
+ // eslint-disable-next-line @typescript-eslint/unbound-method
50
+ Error.captureStackTrace(this, BuildError.get);
51
+ }
52
+ /** Карта кодов ошибок с соответствующими сообщениями. */
53
+ static codeMappings = {
54
+ /** Ошибка, возникающая когда чанк выходит за пределы собираемого пакета. */
55
+ chunkOutsidePackage: (chunkName, packageName, workspacePath) => `Chunk "${chunkName}" is not within package "${packageName}" workspace path "${workspacePath}"`,
56
+ };
57
+ /**
58
+ * Статический метод для получения экземпляра ошибки по коду.
59
+ *
60
+ * @template T - Тип ключа из codeMappings
61
+ * @param code - Код ошибки
62
+ * @param args - Аргументы для формирования сообщения
63
+ * @returns Экземпляр {@link BuildError}
64
+ *
65
+ **/
66
+ static get(code, ...args) {
67
+ const messageFn = this.codeMappings[code];
68
+ const message = messageFn(...args);
69
+ return new BuildError(message, code);
70
+ }
71
+ }
72
+ /**
73
+ * Класс ошибки сборки под NPM, расширяющий стандартный Error.
74
+ *
75
+ * @since 0.3.5
76
+ *
77
+ **/
78
+ class NpmBuildError extends Error {
79
+ /** Код ошибки для программной идентификации. */
80
+ code;
81
+ /**
82
+ * Приватный конструктор для создания экземпляра ошибки.
83
+ *
84
+ * @param message - Сообщение об ошибке
85
+ * @param code - Код ошибки
86
+ * @param scope - Область действия ошибки (по умолчанию '@mirta/rollup NPM')
87
+ *
88
+ **/
89
+ constructor(message, code, scope = '@mirta/rollup NPM') {
90
+ super(`[${scope}] ${message}`);
91
+ this.name = 'NpmBuildError';
92
+ this.code = code;
93
+ if ('captureStackTrace' in Error)
94
+ // eslint-disable-next-line @typescript-eslint/unbound-method
95
+ Error.captureStackTrace(this, NpmBuildError.get);
96
+ }
97
+ /** Карта кодов ошибок с соответствующими сообщениями. */
98
+ static codeMappings = {
99
+ /** Ошибка, возникающая когда конфигурация input-файлов Rollup пуста. */
100
+ inputEmpty: () => 'Rollup Config: Input configuration cannot be empty',
101
+ /** Ошибка, возникающая когда input-файл не начинается с требуемого префикса. */
102
+ inputPathRequiresPrefix: (input, prefix) => `Rollup Config: Input path "${input}" must start with required prefix "${prefix}"`,
103
+ /** Ошибка, возникающая когда input-файл имеет недопустимое расширение. */
104
+ inputFileExtensionNotSupported: (input) => `Rollup Config: Unsupported input "${input}". Please use valid JS or TS file extension`,
105
+ /** Ошибка, возникающая из-за дублирования выходного файла несколькими input-файлами. */
106
+ inputGeneratesDuplicateOutput: (outputFile) => `Rollup Config: Duplicate output file "${outputFile}" produced by multiple inputs. Ensure each input maps to a unique export path`,
107
+ /** Ошибка, возникающая когда input-файл не ассоциирован с экспортом в package.json. */
108
+ inputHasNoExport: (input, entry) => `Rollup Config: The input file "${input}" is not associated with corresponding export "${entry}"`,
109
+ /** Ошибка, возникающая при отсутствии экспорта в package.json. */
110
+ exportEmpty: () => 'Package Config: Missing export configuration. Please define the "exports" field',
111
+ /** Ошибка, возникающая при экспорте типов без указания default-импорта. */
112
+ exportTypesOnly: (types) => `Package Config: Export contains only types "${types}" without specifying a default import in package.json`,
113
+ /** Ошибка, возникающая при отсутствии соответствия с input-файлом конфигурации Rollup. */
114
+ exportHasNoInput: (entry) => `Package Config: Export "${entry}" has no corresponding input file in Rollup configuration`,
115
+ /** Ошибка, возникающая при использовании массива в качестве значения exports. */
116
+ exportDisallowArrayType: () => 'Package Config: The field "exports" must be either a string or an object, but found an array',
117
+ /** Ошибка, возникающая при отсутствии точки в начале пути экспорта. */
118
+ exportMustStartWithDot: (key) => `Package Config: Invalid export path "${key}", it must start with "."`,
119
+ };
120
+ /**
121
+ * Статический метод для получения экземпляра ошибки по коду.
122
+ *
123
+ * @template T - Тип ключа из codeMappings
124
+ * @param code - Код ошибки
125
+ * @param args - Аргументы для формирования сообщения
126
+ * @returns Экземпляр {@link NpmBuildError}
127
+ *
128
+ **/
129
+ static get(code, ...args) {
130
+ const messageFn = this.codeMappings[code];
131
+ const message = messageFn(...args);
132
+ return new NpmBuildError(message, code);
133
+ }
134
+ }
135
+ /**
136
+ * Класс ошибки трансформации AST, расширяющий стандартный Error.
137
+ *
138
+ * @since 0.3.5
139
+ *
140
+ **/
141
+ class AstTransformError extends Error {
142
+ /** Код ошибки для программной идентификации. */
143
+ code;
144
+ /**
145
+ * Приватный конструктор для создания экземпляра ошибки.
146
+ *
147
+ * @param message - Сообщение об ошибке
148
+ * @param code - Код ошибки
149
+ * @param scope - Область действия ошибки (по умолчанию '@mirta/rollup AST')
150
+ *
151
+ **/
152
+ constructor(message, code, scope = '@mirta/rollup AST') {
153
+ super(`[${scope}] ${message}`);
154
+ this.name = 'AstTransformError';
155
+ this.code = code;
156
+ if ('captureStackTrace' in Error)
157
+ // eslint-disable-next-line @typescript-eslint/unbound-method
158
+ Error.captureStackTrace(this, AstTransformError.get);
159
+ }
160
+ /** Карта кодов ошибок с соответствующими сообщениями. */
161
+ static codeMappings = {
162
+ /** Ошибка, возникающая при отсутствии root-файлов в проекте. */
163
+ noRootFiles: () => 'No root files found in the project. Check your TypeScript configuration (tsconfig.json)',
164
+ /** Ошибка, возникающая при отсутствии модуля для указанного спецификатора. */
165
+ moduleNotFound: (modulePath, sourceFileName) => `Module "${modulePath}" not found in "${sourceFileName}"`,
166
+ /** Ошибка, возникающая когда modulePath содержит недопустимые символы. */
167
+ invalidChars: (path) => `Invalid chars in path: "${path}"`,
168
+ };
169
+ /**
170
+ * Статический метод для получения экземпляра ошибки по коду.
171
+ *
172
+ * @template T - Тип ключа из codeMappings
173
+ * @param code - Код ошибки
174
+ * @param args - Аргументы для формирования сообщения
175
+ * @returns Экземпляр {@link AstTransformError}
176
+ *
177
+ **/
178
+ static get(code, ...args) {
179
+ const messageFn = this.codeMappings[code];
180
+ const message = messageFn(...args);
181
+ return new AstTransformError(message, code);
182
+ }
183
+ }
184
+
185
+ export { AstTransformError as A, BuildError as B, NpmBuildError as N, del as d };
package/dist/index.d.mts CHANGED
@@ -1,4 +1,19 @@
1
1
  import { ExternalOption, Plugin, RollupOptions } from 'rollup';
2
+ import { EnvLoaderOptions } from '@mirta/env-loader';
3
+
4
+ /**
5
+ * @file Генерирует конфигурации Rollup на основе `package.json`.
6
+ *
7
+ * Главная функция — `definePackageConfig`. Она:
8
+ * - Читает `exports` и сопоставляет с `input`
9
+ * - Генерирует ESM-бандл и, при необходимости, `.d.ts`
10
+ * - Поддерживает запуск из корня монорепозитория (через `cwd`)
11
+ *
12
+ * Используется для сборки пакетов в монорепозитории.
13
+ *
14
+ * @since 0.3.0
15
+ *
16
+ **/
2
17
 
3
18
  /**
4
19
  * Опции конфигурации Rollup.
@@ -26,28 +41,31 @@ interface RollupConfigOptions {
26
41
  skipExports?: boolean;
27
42
  }
28
43
  /**
29
- * Определяет конфигурацию сборки на основе package.json.
44
+ * Создаёт конфигурации Rollup для пакета на основе его `package.json`.
45
+ *
46
+ * Поддерживает:
47
+ * - ESM-бандл (обязательно)
48
+ * - `.d.ts`-бандл (если в `exports` указаны `types`)
49
+ * - Режим запуска из корня монорепозитория (через `packagePrefix`)
50
+ * - Проверки соответствия `input` ↔ `exports`
30
51
  *
31
- * @param options Опции конфигурации Rollup.
32
- * @returns Массив конфигураций Rollup.
52
+ * @param options Настройки сборки
53
+ * @returns Массив конфигураций Rollup
33
54
  *
55
+ * @example
56
+ *
57
+ * ```ts
58
+ * definePackageConfig({
59
+ * cwd: '/repo/packages/my-package',
60
+ * input: 'src/index.ts',
61
+ * })
62
+ *
63
+ * ```
34
64
  * @since 0.3.0
35
65
  *
36
66
  **/
37
67
  declare function definePackageConfig(options?: RollupConfigOptions): RollupOptions[];
38
68
 
39
- /**
40
- * Опции для загрузки переменных окружения через dotenv.
41
- *
42
- **/
43
- interface DotenvOptions {
44
- /** Префикс для фильтрации переменных окружения. */
45
- prefix?: string;
46
- /** Вывод в консоль значений переменных окружения. */
47
- unsecure?: boolean;
48
- /** Вывод в консоль отладочной информации. */
49
- verbose: boolean;
50
- }
51
69
  /**
52
70
  * Опции конфигурации сборки.
53
71
  *
@@ -57,21 +75,18 @@ interface RuntimeConfigOptions {
57
75
  cwd?: string;
58
76
  /** Внешние зависимости, исключённые из сборки. */
59
77
  external?: ExternalOption;
60
- /** Опции dotenv. */
61
- dotenv?: DotenvOptions;
78
+ /** Конфигурация загрузчика `.env`-файлов `dotenvx`, {@link EnvLoaderOptions}. */
79
+ envLoader?: Omit<EnvLoaderOptions, 'mode' | 'cwd' | 'rootDir'>;
62
80
  /** Дополнительные плагины. */
63
81
  plugins?: Plugin[];
64
82
  }
65
83
  /**
66
- * Основная функция, возвращающая конфигурацию Rollup.
67
- * Обрабатывает входные файлы, плагины и настройку выходных путей.
68
- *
69
- * @param options - опции конфигурации
70
- * @returns Объект RollupOptions
84
+ * Собирает Rollup-конфигурацию для сборки runtime-кода проекта с учётом монорепозитория и подстановки переменных окружения.
71
85
  *
86
+ * @param options - Параметры: `cwd` — рабочая директория проекта; `external` — список внешних зависимостей; `envLoader` — опции загрузчика окружения; `plugins` — дополнительные Rollup-плагины
87
+ * @returns Сконфигурированный объект RollupOptions, готовый для сборки в каталог `dist/es5`
72
88
  * @since 0.3.0
73
- *
74
- **/
89
+ */
75
90
  declare function defineRuntimeConfig(options?: RuntimeConfigOptions): Promise<RollupOptions>;
76
91
 
77
92
  export { defineRuntimeConfig as defineConfig, definePackageConfig };
package/dist/index.mjs CHANGED
@@ -1,19 +1,21 @@
1
- export { a as defineConfig, d as definePackageConfig } from './runtime.mjs';
1
+ export { d as definePackageConfig } from './package.mjs';
2
+ export { d as defineConfig } from './runtime.mjs';
2
3
  import '@rollup/plugin-typescript';
3
4
  import '@rollup/plugin-node-resolve';
4
5
  import '@rollup/plugin-commonjs';
5
6
  import '@rollup/plugin-replace';
6
7
  import 'rollup-plugin-copy';
7
8
  import 'rollup-plugin-dts';
9
+ import './errors.mjs';
10
+ import 'del';
8
11
  import 'typescript';
9
12
  import 'node:path';
13
+ import '@mirta/package';
14
+ import '@mirta/basics/array';
10
15
  import '@rollup/plugin-multi-entry';
11
16
  import 'rollup-plugin-typescript2';
12
- import '@dotenv-run/rollup';
13
17
  import '@rollup/plugin-babel';
14
- import 'del';
18
+ import '@mirta/env-loader';
19
+ import '@mirta/workspace';
15
20
  import 'path';
16
21
  import 'magic-string';
17
- import '@pnpm/find-workspace-dir';
18
- import '@pnpm/workspace.find-packages';
19
- import 'fs';