@koslibs/builder 0.1.0 → 1.0.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/CHANGELOG.md +11 -0
- package/README.md +79 -14
- package/dist/cli/handlers/library.d.ts.map +1 -1
- package/dist/cli/handlers/library.js +2 -2
- package/dist/cli/handlers/library.js.map +1 -1
- package/dist/cli/handlers/storybook.d.ts.map +1 -1
- package/dist/cli/handlers/storybook.js +22 -1
- package/dist/cli/handlers/storybook.js.map +1 -1
- package/dist/cli/handlers/typecheck.d.ts +2 -0
- package/dist/cli/handlers/typecheck.d.ts.map +1 -1
- package/dist/cli/handlers/typecheck.js +49 -1
- package/dist/cli/handlers/typecheck.js.map +1 -1
- package/dist/cli/handlers/ui.d.ts.map +1 -1
- package/dist/cli/handlers/ui.js +2 -1
- package/dist/cli/handlers/ui.js.map +1 -1
- package/dist/cli/process.d.ts +4 -2
- package/dist/cli/process.d.ts.map +1 -1
- package/dist/cli/process.js +29 -5
- package/dist/cli/process.js.map +1 -1
- package/dist/configs/library.d.ts.map +1 -1
- package/dist/configs/library.js +1 -2
- package/dist/configs/library.js.map +1 -1
- package/dist/configs/normalize.d.ts.map +1 -1
- package/dist/configs/normalize.js +7 -2
- package/dist/configs/normalize.js.map +1 -1
- package/dist/configs/storybook.d.ts +2 -2
- package/dist/configs/storybook.d.ts.map +1 -1
- package/dist/configs/storybook.js +10 -15
- package/dist/configs/storybook.js.map +1 -1
- package/dist/configs/typescript.d.ts +0 -1
- package/dist/configs/typescript.d.ts.map +1 -1
- package/dist/configs/typescript.js +0 -9
- package/dist/configs/typescript.js.map +1 -1
- package/dist/configs/ui.d.ts.map +1 -1
- package/dist/configs/ui.js +0 -2
- package/dist/configs/ui.js.map +1 -1
- package/dist/storybook/blocks.d.ts +2 -0
- package/dist/storybook/blocks.d.ts.map +1 -0
- package/dist/storybook/blocks.js +2 -0
- package/dist/storybook/blocks.js.map +1 -0
- package/dist/typings/config.d.ts +3 -0
- package/dist/typings/config.d.ts.map +1 -1
- package/dist/typings/storybook.d.ts +1 -1
- package/dist/typings/storybook.d.ts.map +1 -1
- package/package.json +26 -13
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# @koslibs/builder
|
|
2
|
+
|
|
3
|
+
## 1.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- [#1](https://github.com/koslibs/builder/pull/1) [`79bd508`](https://github.com/koslibs/builder/commit/79bd5081d2dd824ec80a5249de4a9181a384563b) Thanks [@holypower777](https://github.com/holypower777)! - Update the shared toolchain and require @koslibs/configs 1.x. Replace the type-check plugin with tsc and background tsc --watch, and move Storybook to Vite to remove the vulnerable braces dependency chain. Application and library builds continue to use Rspack.
|
|
8
|
+
|
|
9
|
+
Add storybookViteConfig for Storybook-specific settings and expose Docs components and types through @koslibs/builder/storybook/blocks. Storybook customizations previously supplied through Rsbuild settings must be migrated to storybookViteConfig.
|
|
10
|
+
|
|
11
|
+
Adopt shared Changesets release workflows, changelog generation and Git hooks from @koslibs/configs.
|
package/README.md
CHANGED
|
@@ -2,23 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
Единый CLI для React-приложений, ESM-библиотек, Storybook и тестов.
|
|
4
4
|
UI собирается через Rsbuild, библиотеки — через Rslib. Оба используют Rspack.
|
|
5
|
+
Storybook собирается через Vite.
|
|
5
6
|
|
|
6
7
|
## Подключение
|
|
7
8
|
|
|
8
9
|
Node.js >= 24.13.0. Builder устанавливается в devDependencies:
|
|
9
10
|
|
|
10
11
|
```sh
|
|
11
|
-
npm install @koslibs/api @koslibs/components
|
|
12
12
|
npm install --save-dev @koslibs/builder @koslibs/configs @types/react @types/react-dom @types/node
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
`@koslibs/configs` — обязательная peer-зависимость builder с диапазоном `^0.
|
|
15
|
+
`@koslibs/configs` — обязательная peer-зависимость builder с диапазоном `^1.0.0`.
|
|
16
16
|
Builder использует версию configs, установленную в проекте.
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
и не требует их наличия для работы. React и react-dom устанавливаются самим приложением.
|
|
21
|
-
Поддерживаются React 18.3 и 19; совместимость остальных пакетов нужно учитывать отдельно.
|
|
18
|
+
Builder использует TypeScript 6.0.3. TypeScript 7 пока не используется: генератор
|
|
19
|
+
типов свойств Storybook зависит от API компилятора TypeScript 6.
|
|
22
20
|
|
|
23
21
|
В корне проекта создаётся `koslibs-builder.ts`:
|
|
24
22
|
|
|
@@ -45,6 +43,7 @@ export default config;
|
|
|
45
43
|
interface KoslibsBuilderConfig {
|
|
46
44
|
rsbuildConfig?: RsbuildConfig;
|
|
47
45
|
clientConfig?: EnvironmentConfig;
|
|
46
|
+
storybookViteConfig?: UserConfig;
|
|
48
47
|
port?: number;
|
|
49
48
|
}
|
|
50
49
|
```
|
|
@@ -75,7 +74,8 @@ export default config;
|
|
|
75
74
|
→ клиентское окружение `clientConfig`. В UI это окружение называется `client`.
|
|
76
75
|
`port` имеет приоритет над `rsbuildConfig.server.port`, затем используется 8080.
|
|
77
76
|
Занятый порт вызывает ошибку вместо незаметного переключения на другой.
|
|
78
|
-
`clientConfig` используется для UI
|
|
77
|
+
`clientConfig` используется только для UI. `rsbuildConfig` используется для UI и библиотек.
|
|
78
|
+
Для Storybook предназначен `storybookViteConfig`; настройки Rsbuild в Vite не переносятся.
|
|
79
79
|
|
|
80
80
|
## Scripts приложения
|
|
81
81
|
|
|
@@ -115,6 +115,7 @@ HTML можно изменить через `clientConfig.html`; для обыч
|
|
|
115
115
|
"extends": "@koslibs/configs/tsconfig",
|
|
116
116
|
"compilerOptions": {
|
|
117
117
|
"types": ["@koslibs/builder/client"],
|
|
118
|
+
"esModuleInterop": true,
|
|
118
119
|
"jsx": "react-jsx"
|
|
119
120
|
},
|
|
120
121
|
"include": ["src", "koslibs-builder.ts"]
|
|
@@ -122,6 +123,8 @@ HTML можно изменить через `clientConfig.html`; для обыч
|
|
|
122
123
|
```
|
|
123
124
|
|
|
124
125
|
`@koslibs/builder/client` предоставляет типы CSS Modules, ресурсов и `import.meta.env`.
|
|
126
|
+
Для TypeScript 6 нужно явно включить `esModuleInterop`: preset из `@koslibs/configs@1.0.0`
|
|
127
|
+
задаёт устаревшее значение `false`.
|
|
125
128
|
Для кода Node.js и конфигов, использующих `process`, добавь `@types/node` и `node` в `types`.
|
|
126
129
|
При использовании библиотек или JSX также нужны соответствующие `@types/*`.
|
|
127
130
|
|
|
@@ -137,9 +140,10 @@ npm run typecheck
|
|
|
137
140
|
зависимостей в package.json примера.
|
|
138
141
|
|
|
139
142
|
`ui:build` сначала проверяет весь TS-проект и возвращает ненулевой код при ошибках.
|
|
140
|
-
`ui:start`
|
|
143
|
+
`ui:start` запускает `tsc --noEmit --watch`, показывает ошибки в терминале,
|
|
141
144
|
продолжает работать и повторяет проверку после исправлений. Dev-server не прекращает
|
|
142
145
|
работу из-за исправимой ошибки типов. Проверку типов задаёт builder.
|
|
146
|
+
Фоновый checker завершается вместе с dev-server; его неожиданное завершение останавливает сервер.
|
|
143
147
|
|
|
144
148
|
## Библиотеки
|
|
145
149
|
|
|
@@ -198,15 +202,47 @@ Builder не изменяет exports автоматически. Линтинг
|
|
|
198
202
|
|
|
199
203
|
## Storybook
|
|
200
204
|
|
|
201
|
-
Builder управляет
|
|
205
|
+
Builder управляет Vite-framework, addon-docs, Controls, автодокументацией и stories
|
|
202
206
|
из `src/**/*.stories.{ts,tsx,js,jsx,mjs}`. `.storybook/main.ts` не требуется и не читается:
|
|
203
207
|
служебный main создаётся builder. При миграции старые addons и main-настройки нужно
|
|
204
208
|
сверить отдельно. Для локальных decorators и parameters используется `.storybook/preview.ts`.
|
|
205
209
|
Файлы `public` подключаются как статические ресурсы. Выход — `storybook-static`.
|
|
206
210
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
211
|
+
Блоки для собственных страниц Docs доступны через builder:
|
|
212
|
+
|
|
213
|
+
```tsx
|
|
214
|
+
import { Canvas, Controls, Title } from '@koslibs/builder/storybook/blocks';
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
Экспорт включает компоненты и типы `@storybook/addon-docs/blocks`. При миграции замените
|
|
218
|
+
импорты из `@storybook/addon-docs/blocks` на `@koslibs/builder/storybook/blocks`.
|
|
219
|
+
Если других прямых импортов `@storybook/addon-docs` нет, отдельную зависимость можно удалить:
|
|
220
|
+
builder управляет её версией и подключением addon в Storybook.
|
|
221
|
+
|
|
222
|
+
Storybook использует `port`. Перед production-сборкой запускается `tsc --noEmit`,
|
|
223
|
+
в dev — отдельный `tsc --noEmit --watch`. TypeScript 6 остаётся для извлечения типов
|
|
224
|
+
свойств компонентов в Docs/Controls.
|
|
225
|
+
|
|
226
|
+
Настройки Storybook задаются через `storybookViteConfig` в `koslibs-builder.ts`:
|
|
227
|
+
|
|
228
|
+
```ts
|
|
229
|
+
import type { KoslibsBuilderConfig } from '@koslibs/builder';
|
|
230
|
+
|
|
231
|
+
const config: KoslibsBuilderConfig = {
|
|
232
|
+
storybookViteConfig: {
|
|
233
|
+
define: { __API_URL__: JSON.stringify('https://api.example.test') },
|
|
234
|
+
},
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
export default config;
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
Это типизированные настройки Vite. Корень проекта задаёт builder; локальные
|
|
241
|
+
`vite.config.*` не загружаются автоматически. CSS Modules и автоматический JSX runtime
|
|
242
|
+
поддерживаются без дополнительных настроек. Vite загружает `.env` проекта и публикует
|
|
243
|
+
переменные с префиксами `PUBLIC_` и `VITE_`. `rsbuildConfig`, `clientConfig` и плагины
|
|
244
|
+
Rspack не применяются к Storybook: определения, алиасы и другие специальные настройки
|
|
245
|
+
нужно перенести в соответствующие поля Vite. Неподдерживаемые поля builder-конфига,
|
|
210
246
|
включая `storybookConfig`, игнорируются; расширение API для addons возможно следующим шагом.
|
|
211
247
|
|
|
212
248
|
## Тесты
|
|
@@ -238,7 +274,7 @@ import type { Meta, StoryObj } from '@koslibs/builder/storybook';
|
|
|
238
274
|
```
|
|
239
275
|
|
|
240
276
|
Если используются прямые импорты `@playwright/test`, `@rstest/core` или
|
|
241
|
-
|
|
277
|
+
`@storybook/react-vite`, эти пакеты должны быть прямыми devDependencies проекта.
|
|
242
278
|
Builder сам разрешает исполняемые файлы своих инструментов и не полагается на глобальную установку.
|
|
243
279
|
|
|
244
280
|
Если проект имеет `rstest.config.*` или `playwright.config.*`, builder использует их.
|
|
@@ -274,6 +310,35 @@ const apiUrl = import.meta.env.PUBLIC_API_URL;
|
|
|
274
310
|
Для переиспользуемых библиотек builder не загружает `.env` автоматически.
|
|
275
311
|
Поведение описано в [документации Rsbuild](https://rsbuild.rs/guide/advanced/env-vars).
|
|
276
312
|
|
|
313
|
+
## Релиз самого builder
|
|
314
|
+
|
|
315
|
+
Релиз и Git hooks управляются `@koslibs/configs`. `npm install` / `npm ci` запускают
|
|
316
|
+
`prepare` и устанавливают общий Lefthook preset: проверки перед commit, Commitlint
|
|
317
|
+
и проверку Changeset перед push.
|
|
318
|
+
|
|
319
|
+
Перед отправкой изменений создайте один Changeset для PR:
|
|
320
|
+
|
|
321
|
+
```sh
|
|
322
|
+
npm run changeset
|
|
323
|
+
git add .changeset/*.md
|
|
324
|
+
git commit -m "feat: describe the change"
|
|
325
|
+
git push
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
Для следующих изменений в том же PR обновляйте существующий Changeset.
|
|
329
|
+
Проверка перед push требует, чтобы файл был добавлен и закоммичен; версия пакета
|
|
330
|
+
до релиза остаётся прежней. Для ручной проверки используется
|
|
331
|
+
`npm run changeset:check -- --base origin/main --head HEAD`.
|
|
332
|
+
|
|
333
|
+
В PR общий workflow запускает проверку `Changeset required`. После merge в `main`
|
|
334
|
+
workflow проверяет npm-пакет и через `koslibs-release` обновляет версию и `CHANGELOG.md`,
|
|
335
|
+
публикует пакет и отправляет релизный commit и Git tag. Повторный запуск доступен
|
|
336
|
+
через `workflow_dispatch`. Общие workflows закреплены на теге configs `v1.0.0`.
|
|
337
|
+
|
|
338
|
+
В настройках GitHub сделайте `Changeset required` обязательным для merge.
|
|
339
|
+
Для публикации используется существующий `NPM_TOKEN` либо npm Trusted Publishing,
|
|
340
|
+
настроенный для репозитория `koslibs/builder` и вызывающего workflow `release.yml`.
|
|
341
|
+
|
|
277
342
|
## Структура исходников
|
|
278
343
|
|
|
279
344
|
```text
|
|
@@ -298,4 +363,4 @@ src/
|
|
|
298
363
|
|
|
299
364
|
Архитектурные источники: [Rsbuild](https://rsbuild.dev/guide/faq/general),
|
|
300
365
|
[Rslib: сохранение структуры модулей](https://www.rslib.rs/config/lib/bundle),
|
|
301
|
-
[Storybook
|
|
366
|
+
[Storybook Vite](https://storybook.js.org/docs/builders/vite).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/library.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/library.ts"],"names":[],"mappings":"AAMA,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAc7E"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { writeLibraryTsconfig } from '../../configs/generated.js';
|
|
2
2
|
import { createLibraryConfig } from '../../configs/library.js';
|
|
3
3
|
import { loadBuilderConfig } from '../../configs/load.js';
|
|
4
|
-
import {
|
|
4
|
+
import { watchTypecheck } from './typecheck.js';
|
|
5
5
|
export async function runLibrary(command, root) {
|
|
6
6
|
const config = await loadBuilderConfig(root);
|
|
7
7
|
const { createRslib } = await import('@rslib/core');
|
|
@@ -12,7 +12,7 @@ export async function runLibrary(command, root) {
|
|
|
12
12
|
});
|
|
13
13
|
const result = await rslib.build({ watch: command === 'lib:watch' });
|
|
14
14
|
if (command === 'lib:watch') {
|
|
15
|
-
|
|
15
|
+
await watchTypecheck(root, () => result.close());
|
|
16
16
|
}
|
|
17
17
|
else {
|
|
18
18
|
await result.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../../src/cli/handlers/library.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../../src/cli/handlers/library.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAe,EAAE,IAAY;IAC1D,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IACpD,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC;QAC5B,GAAG,EAAE,IAAI;QACT,MAAM,EAAE,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,WAAW,CAAC;KACrE,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,KAAK,WAAW,EAAE,CAAC,CAAC;IACrE,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC1B,MAAM,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACJ,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storybook.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/storybook.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"storybook.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/storybook.ts"],"names":[],"mappings":"AAUA,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA2CjG"}
|
|
@@ -4,11 +4,18 @@ import { writeGeneratedConfig } from '../../configs/generated.js';
|
|
|
4
4
|
import { loadBuilderConfig } from '../../configs/load.js';
|
|
5
5
|
import { packageBin } from '../../utils/packages.js';
|
|
6
6
|
import { runNode } from '../process.js';
|
|
7
|
+
import { typecheck, watchTypecheck } from './typecheck.js';
|
|
7
8
|
export async function runStorybook(command, root, args) {
|
|
8
9
|
const config = await loadBuilderConfig(root);
|
|
9
10
|
const generated = await writeGeneratedConfig(root, 'storybook', `import { createStorybookConfig } from ${JSON.stringify(new URL('../../storybook/index.js', import.meta.url).href)};\n` +
|
|
10
11
|
`export default await createStorybookConfig(${JSON.stringify(root)});\n`);
|
|
11
12
|
const dev = command.endsWith(':start');
|
|
13
|
+
if (!dev) {
|
|
14
|
+
const code = await typecheck(root);
|
|
15
|
+
if (code !== 0) {
|
|
16
|
+
return code;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
12
19
|
const flags = dev
|
|
13
20
|
? [
|
|
14
21
|
'dev',
|
|
@@ -18,6 +25,20 @@ export async function runStorybook(command, root, args) {
|
|
|
18
25
|
'--no-open',
|
|
19
26
|
]
|
|
20
27
|
: ['build', '--output-dir', resolve(root, 'storybook-static')];
|
|
21
|
-
|
|
28
|
+
const controller = new AbortController();
|
|
29
|
+
const result = runNode(packageBin('storybook', 'storybook'), [...flags, '--config-dir', generated.directory, '--disable-telemetry', ...args], root, controller.signal);
|
|
30
|
+
if (!dev) {
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
const stop = await watchTypecheck(root, async () => {
|
|
34
|
+
controller.abort();
|
|
35
|
+
await result;
|
|
36
|
+
});
|
|
37
|
+
try {
|
|
38
|
+
return await result;
|
|
39
|
+
}
|
|
40
|
+
finally {
|
|
41
|
+
await stop();
|
|
42
|
+
}
|
|
22
43
|
}
|
|
23
44
|
//# sourceMappingURL=storybook.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storybook.js","sourceRoot":"","sources":["../../../src/cli/handlers/storybook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAe,EAAE,IAAY,EAAE,IAAc;IAC5E,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,MAAM,oBAAoB,CACxC,IAAI,EACJ,WAAW,EACX,yCAAyC,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,0BAA0B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK;QACnH,8CAA8C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAC/E,CAAC;IACF,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,GAAG;QACb,CAAC,CAAC;YACI,KAAK;YACL,QAAQ;YACR,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,IAAI,YAAY,CAAC;YACzE,cAAc;YACd,WAAW;SACd;QACH,CAAC,CAAC,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACnE,
|
|
1
|
+
{"version":3,"file":"storybook.js","sourceRoot":"","sources":["../../../src/cli/handlers/storybook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAe,EAAE,IAAY,EAAE,IAAc;IAC5E,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,MAAM,oBAAoB,CACxC,IAAI,EACJ,WAAW,EACX,yCAAyC,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,0BAA0B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK;QACnH,8CAA8C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAC/E,CAAC;IACF,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IACD,MAAM,KAAK,GAAG,GAAG;QACb,CAAC,CAAC;YACI,KAAK;YACL,QAAQ;YACR,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,IAAI,YAAY,CAAC;YACzE,cAAc;YACd,WAAW;SACd;QACH,CAAC,CAAC,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,OAAO,CAClB,UAAU,CAAC,WAAW,EAAE,WAAW,CAAC,EACpC,CAAC,GAAG,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC,SAAS,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAAC,EAC/E,IAAI,EACJ,UAAU,CAAC,MAAM,CACpB,CAAC;IACF,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;QAC/C,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,MAAM,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,IAAI,CAAC;QACD,OAAO,MAAM,MAAM,CAAC;IACxB,CAAC;YAAS,CAAC;QACP,MAAM,IAAI,EAAE,CAAC;IACjB,CAAC;AACL,CAAC"}
|
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
export declare function typecheck(root: string): Promise<number>;
|
|
2
|
+
/** Owns the checker and the dev/watch resource, closing both together. */
|
|
3
|
+
export declare function watchTypecheck(root: string, closeOwner: () => Promise<void>): Promise<() => Promise<void>>;
|
|
2
4
|
//# sourceMappingURL=typecheck.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typecheck.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/typecheck.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"typecheck.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/typecheck.ts"],"names":[],"mappings":"AAMA,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM7D;AAED,0EAA0E;AAC1E,wBAAsB,cAAc,CAChC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAChC,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CA+C9B"}
|
|
@@ -1,6 +1,54 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { once } from 'node:events';
|
|
1
3
|
import { packageBin } from '../../utils/packages.js';
|
|
2
|
-
import { runNode } from '../process.js';
|
|
4
|
+
import { closeOnSignal, runNode, stopNode } from '../process.js';
|
|
3
5
|
export async function typecheck(root) {
|
|
4
6
|
return runNode(packageBin('typescript', 'tsc'), ['--project', 'tsconfig.json', '--noEmit'], root);
|
|
5
7
|
}
|
|
8
|
+
/** Owns the checker and the dev/watch resource, closing both together. */
|
|
9
|
+
export async function watchTypecheck(root, closeOwner) {
|
|
10
|
+
const child = spawn(process.execPath, [
|
|
11
|
+
packageBin('typescript', 'tsc'),
|
|
12
|
+
'--project',
|
|
13
|
+
'tsconfig.json',
|
|
14
|
+
'--noEmit',
|
|
15
|
+
'--watch',
|
|
16
|
+
'--preserveWatchOutput',
|
|
17
|
+
'--pretty',
|
|
18
|
+
'false',
|
|
19
|
+
], { cwd: root, stdio: 'inherit', windowsHide: true });
|
|
20
|
+
const closed = new Promise((resolveClosed) => child.once('close', () => resolveClosed()));
|
|
21
|
+
let stopping;
|
|
22
|
+
let removeSignals = () => { };
|
|
23
|
+
const onExit = () => stopNode(child);
|
|
24
|
+
const stop = () => {
|
|
25
|
+
if (!stopping) {
|
|
26
|
+
// Mark as stopping before killing: a normal shutdown is not a checker failure.
|
|
27
|
+
stopping = Promise.resolve().then(async () => {
|
|
28
|
+
removeSignals();
|
|
29
|
+
process.removeListener('exit', onExit);
|
|
30
|
+
stopNode(child);
|
|
31
|
+
await Promise.all([closed, closeOwner()]);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
return stopping;
|
|
35
|
+
};
|
|
36
|
+
try {
|
|
37
|
+
await once(child, 'spawn');
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
await stop();
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
child.once('close', (code) => {
|
|
44
|
+
if (!stopping) {
|
|
45
|
+
console.error(`[koslibs-builder] TypeScript watcher exited unexpectedly (${code}).`);
|
|
46
|
+
process.exitCode = 1;
|
|
47
|
+
void stop().catch((error) => console.error(error));
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
process.once('exit', onExit);
|
|
51
|
+
removeSignals = closeOnSignal(stop);
|
|
52
|
+
return stop;
|
|
53
|
+
}
|
|
6
54
|
//# sourceMappingURL=typecheck.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typecheck.js","sourceRoot":"","sources":["../../../src/cli/handlers/typecheck.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"typecheck.js","sourceRoot":"","sources":["../../../src/cli/handlers/typecheck.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEjE,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY;IACxC,OAAO,OAAO,CACV,UAAU,CAAC,YAAY,EAAE,KAAK,CAAC,EAC/B,CAAC,WAAW,EAAE,eAAe,EAAE,UAAU,CAAC,EAC1C,IAAI,CACP,CAAC;AACN,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,cAAc,CAChC,IAAY,EACZ,UAA+B;IAE/B,MAAM,KAAK,GAAG,KAAK,CACf,OAAO,CAAC,QAAQ,EAChB;QACI,UAAU,CAAC,YAAY,EAAE,KAAK,CAAC;QAC/B,WAAW;QACX,eAAe;QACf,UAAU;QACV,SAAS;QACT,uBAAuB;QACvB,UAAU;QACV,OAAO;KACV,EACD,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,CACrD,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,OAAO,CAAO,CAAC,aAAa,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAChG,IAAI,QAAmC,CAAC;IACxC,IAAI,aAAa,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,GAAG,EAAE;QACd,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,+EAA+E;YAC/E,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;gBACzC,aAAa,EAAE,CAAC;gBAChB,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACvC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAChB,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;QACP,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC,CAAC;IACF,IAAI,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,EAAE,CAAC;QACb,MAAM,KAAK,CAAC;IAChB,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;QACzB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,6DAA6D,IAAI,IAAI,CAAC,CAAC;YACrF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAChE,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,IAAI,CAAC;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/ui.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/ui.ts"],"names":[],"mappings":"AAMA,wBAAsB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBxE"}
|
package/dist/cli/handlers/ui.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { loadBuilderConfig } from '../../configs/load.js';
|
|
2
2
|
import { createUiConfig } from '../../configs/ui.js';
|
|
3
3
|
import { closeOnSignal } from '../process.js';
|
|
4
|
+
import { watchTypecheck } from './typecheck.js';
|
|
4
5
|
export async function runUi(command, root) {
|
|
5
6
|
const config = await loadBuilderConfig(root);
|
|
6
7
|
const { createRsbuild } = await import('@rsbuild/core');
|
|
@@ -11,7 +12,7 @@ export async function runUi(command, root) {
|
|
|
11
12
|
});
|
|
12
13
|
if (command === 'ui:start') {
|
|
13
14
|
const result = await rsbuild.startDevServer();
|
|
14
|
-
|
|
15
|
+
await watchTypecheck(root, () => result.server.close());
|
|
15
16
|
}
|
|
16
17
|
else if (command === 'ui:preview') {
|
|
17
18
|
const result = await rsbuild.preview();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../src/cli/handlers/ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,OAAe,EAAE,IAAY;IACrD,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC;QAChC,GAAG,EAAE,IAAI;QACT,aAAa,EAAE,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC;QAC3C,OAAO,EAAE,IAAI;KAChB,CAAC,CAAC;IACH,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;QAC9C,
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../src/cli/handlers/ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,OAAe,EAAE,IAAY;IACrD,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC;QAChC,GAAG,EAAE,IAAI;QACT,aAAa,EAAE,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC;QAC3C,OAAO,EAAE,IAAI;KAChB,CAAC,CAAC;IACH,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;QAC9C,MAAM,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC5D,CAAC;SAAM,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACvC,aAAa,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACJ,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACrC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;AACL,CAAC"}
|
package/dist/cli/process.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
export declare function
|
|
1
|
+
import { type ChildProcess } from 'node:child_process';
|
|
2
|
+
export declare function stopNode(child: ChildProcess): void;
|
|
3
|
+
export declare function runNode(bin: string, args: string[], root: string, signal?: AbortSignal): Promise<number>;
|
|
4
|
+
export declare function closeOnSignal(close: () => Promise<void>): () => void;
|
|
3
5
|
//# sourceMappingURL=process.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/cli/process.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/cli/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEzE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAclD;AAED,wBAAgB,OAAO,CACnB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,MAAM,CAAC,CAwBjB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAoBpE"}
|
package/dist/cli/process.js
CHANGED
|
@@ -1,21 +1,41 @@
|
|
|
1
|
-
import { spawn } from 'node:child_process';
|
|
2
|
-
export function
|
|
1
|
+
import { spawn, spawnSync } from 'node:child_process';
|
|
2
|
+
export function stopNode(child) {
|
|
3
|
+
if (!child.pid || child.exitCode !== null || child.signalCode !== null) {
|
|
4
|
+
return;
|
|
5
|
+
}
|
|
6
|
+
if (process.platform === 'win32') {
|
|
7
|
+
const result = spawnSync('taskkill', ['/pid', String(child.pid), '/T', '/F'], {
|
|
8
|
+
stdio: 'ignore',
|
|
9
|
+
windowsHide: true,
|
|
10
|
+
});
|
|
11
|
+
if (result.status === 0) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
child.kill('SIGTERM');
|
|
16
|
+
}
|
|
17
|
+
export function runNode(bin, args, root, signal) {
|
|
3
18
|
return new Promise((resolveCode, reject) => {
|
|
4
19
|
const child = spawn(process.execPath, [bin, ...args], { cwd: root, stdio: 'inherit' });
|
|
5
|
-
const stop = () => child
|
|
20
|
+
const stop = () => stopNode(child);
|
|
6
21
|
process.once('SIGINT', stop);
|
|
7
22
|
process.once('SIGTERM', stop);
|
|
23
|
+
signal?.addEventListener('abort', stop, { once: true });
|
|
24
|
+
if (signal?.aborted) {
|
|
25
|
+
stop();
|
|
26
|
+
}
|
|
8
27
|
const removeListeners = () => {
|
|
9
28
|
process.removeListener('SIGINT', stop);
|
|
10
29
|
process.removeListener('SIGTERM', stop);
|
|
30
|
+
signal?.removeEventListener('abort', stop);
|
|
11
31
|
};
|
|
12
32
|
child.once('error', (error) => {
|
|
13
33
|
removeListeners();
|
|
14
34
|
reject(error);
|
|
15
35
|
});
|
|
16
|
-
child.once('exit', (code,
|
|
36
|
+
child.once('exit', (code, exitSignal) => {
|
|
17
37
|
removeListeners();
|
|
18
|
-
resolveCode(code ?? (
|
|
38
|
+
resolveCode(code ?? (exitSignal ? 130 : 1));
|
|
19
39
|
});
|
|
20
40
|
});
|
|
21
41
|
}
|
|
@@ -32,5 +52,9 @@ export function closeOnSignal(close) {
|
|
|
32
52
|
};
|
|
33
53
|
process.once('SIGINT', stop);
|
|
34
54
|
process.once('SIGTERM', stop);
|
|
55
|
+
return () => {
|
|
56
|
+
process.removeListener('SIGINT', stop);
|
|
57
|
+
process.removeListener('SIGTERM', stop);
|
|
58
|
+
};
|
|
35
59
|
}
|
|
36
60
|
//# sourceMappingURL=process.js.map
|
package/dist/cli/process.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/cli/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/cli/process.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../../src/configs/library.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAIjE,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,oBAAoB,EAC5B,IAAI,EAAE,MAAM,EACZ,KAAK,UAAQ,GACd,WAAW,
|
|
1
|
+
{"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../../src/configs/library.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAIjE,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,oBAAoB,EAC5B,IAAI,EAAE,MAAM,EACZ,KAAK,UAAQ,GACd,WAAW,CA8Bb"}
|
package/dist/configs/library.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { resolve } from 'node:path';
|
|
2
2
|
import { mergeRsbuildConfig } from '@rsbuild/core';
|
|
3
3
|
import { pluginReact } from '@rsbuild/plugin-react';
|
|
4
|
-
import {
|
|
4
|
+
import { typescriptPath } from './typescript.js';
|
|
5
5
|
export function createLibraryConfig(config, root, watch = false) {
|
|
6
6
|
// clientConfig belongs to browser UIs and Storybook, never to the library output.
|
|
7
7
|
const merged = mergeRsbuildConfig({
|
|
@@ -21,7 +21,6 @@ export function createLibraryConfig(config, root, watch = false) {
|
|
|
21
21
|
}, config.rsbuildConfig);
|
|
22
22
|
return {
|
|
23
23
|
...merged,
|
|
24
|
-
plugins: [...(merged.plugins ?? []), ...(watch ? [typeCheckPlugin(root)] : [])],
|
|
25
24
|
lib: [
|
|
26
25
|
{
|
|
27
26
|
format: 'esm',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/configs/library.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/configs/library.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKpD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,UAAU,mBAAmB,CAC/B,MAA4B,EAC5B,IAAY,EACZ,KAAK,GAAG,KAAK;IAEb,kFAAkF;IAClF,MAAM,MAAM,GAAG,kBAAkB,CAC7B;QACI,MAAM,EAAE;YACJ,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,IAAI;gBAC1C,KAAK,EAAE;oBACH,UAAU;oBACV,oBAAoB;oBACpB,oBAAoB;oBACpB,uBAAuB;iBAC1B;aACJ;YACD,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE,8CAA8C,CAAC;SAC9E;QACD,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;QACrD,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC;KAC3B,EACD,MAAM,CAAC,aAAa,CACvB,CAAC;IACF,OAAO;QACH,GAAG,MAAM;QACT,GAAG,EAAE;YACD;gBACI,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE;aAC/D;SACJ;KACJ,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/configs/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAMjE,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,
|
|
1
|
+
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/configs/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAMjE,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CA0BpE"}
|
|
@@ -5,12 +5,16 @@ export function normalizeConfig(value) {
|
|
|
5
5
|
if (!isObject(value)) {
|
|
6
6
|
throw new Error('koslibs-builder.ts must default-export a configuration object.');
|
|
7
7
|
}
|
|
8
|
-
const { port, rsbuildConfig, clientConfig } = value;
|
|
8
|
+
const { port, rsbuildConfig, clientConfig, storybookViteConfig } = value;
|
|
9
9
|
if (port !== undefined &&
|
|
10
10
|
(!Number.isInteger(port) || Number(port) < 1 || Number(port) > 65535)) {
|
|
11
11
|
throw new Error('port must be an integer between 1 and 65535.');
|
|
12
12
|
}
|
|
13
|
-
for (const [name, field] of Object.entries({
|
|
13
|
+
for (const [name, field] of Object.entries({
|
|
14
|
+
rsbuildConfig,
|
|
15
|
+
clientConfig,
|
|
16
|
+
storybookViteConfig,
|
|
17
|
+
})) {
|
|
14
18
|
if (field !== undefined && !isObject(field)) {
|
|
15
19
|
throw new Error(`${name} must be a configuration object.`);
|
|
16
20
|
}
|
|
@@ -19,6 +23,7 @@ export function normalizeConfig(value) {
|
|
|
19
23
|
port: port,
|
|
20
24
|
rsbuildConfig: rsbuildConfig,
|
|
21
25
|
clientConfig: clientConfig,
|
|
26
|
+
storybookViteConfig: storybookViteConfig,
|
|
22
27
|
};
|
|
23
28
|
}
|
|
24
29
|
//# sourceMappingURL=normalize.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/configs/normalize.ts"],"names":[],"mappings":"AAEA,SAAS,QAAQ,CAAC,KAAc;IAC5B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc;IAC1C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/configs/normalize.ts"],"names":[],"mappings":"AAEA,SAAS,QAAQ,CAAC,KAAc;IAC5B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc;IAC1C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,mBAAmB,EAAE,GAAG,KAAK,CAAC;IACzE,IACI,IAAI,KAAK,SAAS;QAClB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,EACvE,CAAC;QACC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACpE,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC;QACvC,aAAa;QACb,YAAY;QACZ,mBAAmB;KACtB,CAAC,EAAE,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kCAAkC,CAAC,CAAC;QAC/D,CAAC;IACL,CAAC;IACD,OAAO;QACH,IAAI,EAAE,IAA0B;QAChC,aAAa,EAAE,aAAsD;QACrE,YAAY,EAAE,YAAoD;QAClE,mBAAmB,EAAE,mBAAkE;KAC1F,CAAC;AACN,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type UserConfig } from 'vite';
|
|
2
2
|
import type { KoslibsBuilderConfig } from '../typings/config.js';
|
|
3
3
|
import type { StorybookConfig } from '../typings/storybook.js';
|
|
4
|
-
export declare function
|
|
4
|
+
export declare function createStorybookViteConfig(config: KoslibsBuilderConfig, root: string): UserConfig;
|
|
5
5
|
export declare function createStorybookConfig(root?: string): Promise<StorybookConfig>;
|
|
6
6
|
//# sourceMappingURL=storybook.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storybook.d.ts","sourceRoot":"","sources":["../../src/configs/storybook.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"storybook.d.ts","sourceRoot":"","sources":["../../src/configs/storybook.ts"],"names":[],"mappings":"AAGA,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AAEpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAM/D,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAKhG;AAED,wBAAsB,qBAAqB,CAAC,IAAI,SAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAoB1F"}
|
|
@@ -1,35 +1,30 @@
|
|
|
1
1
|
import { existsSync } from 'node:fs';
|
|
2
2
|
import { resolve } from 'node:path';
|
|
3
|
-
import {
|
|
3
|
+
import { mergeConfig } from 'vite';
|
|
4
4
|
import { packageDirectory } from '../utils/packages.js';
|
|
5
|
-
import {
|
|
5
|
+
import { writeGeneratedConfig } from './generated.js';
|
|
6
6
|
import { loadBuilderConfig } from './load.js';
|
|
7
|
-
export function
|
|
8
|
-
|
|
9
|
-
const merged = mergeRsbuildConfig(defaults, config.rsbuildConfig, config.clientConfig);
|
|
10
|
-
// Storybook owns its entry points, HTML, dev server and output directory.
|
|
11
|
-
const { environments: _environments, server: _server, html: _html, ...common } = merged;
|
|
12
|
-
const { entry: _entry, ...source } = common.source ?? {};
|
|
13
|
-
const { distPath: _distPath, target: _target, ...output } = common.output ?? {};
|
|
14
|
-
return { ...common, source, output };
|
|
7
|
+
export function createStorybookViteConfig(config, root) {
|
|
8
|
+
return mergeConfig(mergeConfig({ envPrefix: ['VITE_', 'PUBLIC_'] }, config.storybookViteConfig ?? {}), { root });
|
|
15
9
|
}
|
|
16
10
|
export async function createStorybookConfig(root = process.cwd()) {
|
|
17
11
|
const config = await loadBuilderConfig(root);
|
|
12
|
+
const viteConfig = await writeGeneratedConfig(root, 'storybook-vite', 'export default {};\n');
|
|
18
13
|
const preview = ['ts', 'tsx', 'js', 'jsx', 'mjs']
|
|
19
14
|
.map((extension) => resolve(root, `.storybook/preview.${extension}`))
|
|
20
15
|
.find((path) => existsSync(path));
|
|
21
16
|
return {
|
|
22
17
|
framework: {
|
|
23
|
-
name: packageDirectory('storybook
|
|
24
|
-
options: {},
|
|
18
|
+
name: packageDirectory('@storybook/react-vite'),
|
|
19
|
+
options: { builder: { viteConfigPath: viteConfig.file } },
|
|
25
20
|
},
|
|
26
21
|
stories: [resolve(root, 'src/**/*.stories.@(ts|tsx|js|jsx|mjs)').replaceAll('\\', '/')],
|
|
27
22
|
addons: [packageDirectory('@storybook/addon-docs')],
|
|
28
23
|
...(preview ? { previewAnnotations: [preview] } : {}),
|
|
29
24
|
...(existsSync(resolve(root, 'public')) ? { staticDirs: [resolve(root, 'public')] } : {}),
|
|
30
|
-
typescript: { check:
|
|
31
|
-
async
|
|
32
|
-
return
|
|
25
|
+
typescript: { check: false, reactDocgen: 'react-docgen-typescript' },
|
|
26
|
+
async viteFinal(base) {
|
|
27
|
+
return mergeConfig(base, createStorybookViteConfig(config, root));
|
|
33
28
|
},
|
|
34
29
|
};
|
|
35
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storybook.js","sourceRoot":"","sources":["../../src/configs/storybook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"storybook.js","sourceRoot":"","sources":["../../src/configs/storybook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAmB,MAAM,MAAM,CAAC;AAIpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,UAAU,yBAAyB,CAAC,MAA4B,EAAE,IAAY;IAChF,OAAO,WAAW,CACd,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC,EAClF,EAAE,IAAI,EAAE,CACX,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE;IAC5D,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,EAAE,sBAAsB,CAAC,CAAC;IAC9F,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;SAC5C,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,sBAAsB,SAAS,EAAE,CAAC,CAAC;SACpE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,OAAO;QACH,SAAS,EAAE;YACP,IAAI,EAAE,gBAAgB,CAAC,uBAAuB,CAAC;YAC/C,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE;SAC5D;QACD,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,uCAAuC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACvF,MAAM,EAAE,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;QACnD,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzF,UAAU,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,yBAAyB,EAAE;QACpE,KAAK,CAAC,SAAS,CAAC,IAAI;YAChB,OAAO,WAAW,CAAC,IAAI,EAAE,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QACtE,CAAC;KACJ,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/configs/typescript.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/configs/typescript.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc,QAAgC,CAAC"}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';
|
|
2
|
-
import { resolve } from 'node:path';
|
|
3
|
-
import { pluginTypeCheck } from '@rsbuild/plugin-type-check';
|
|
4
2
|
const require = createRequire(import.meta.url);
|
|
5
3
|
export const typescriptPath = require.resolve('typescript');
|
|
6
|
-
export function typeCheckPlugin(root) {
|
|
7
|
-
return pluginTypeCheck({
|
|
8
|
-
tsCheckerOptions: {
|
|
9
|
-
typescript: { configFile: resolve(root, 'tsconfig.json'), typescriptPath },
|
|
10
|
-
},
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
4
|
//# sourceMappingURL=typescript.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../src/configs/typescript.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../src/configs/typescript.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC"}
|
package/dist/configs/ui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/configs/ui.ts"],"names":[],"mappings":"AAGA,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAGvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/configs/ui.ts"],"names":[],"mappings":"AAGA,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAGvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAWjE,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAoBxF"}
|
package/dist/configs/ui.js
CHANGED
|
@@ -3,7 +3,6 @@ import { resolve } from 'node:path';
|
|
|
3
3
|
import { mergeRsbuildConfig } from '@rsbuild/core';
|
|
4
4
|
import { pluginReact } from '@rsbuild/plugin-react';
|
|
5
5
|
import { createClientDefaults, DEFAULT_PORT } from './defaults.js';
|
|
6
|
-
import { typeCheckPlugin } from './typescript.js';
|
|
7
6
|
function defaultEntry(root, names) {
|
|
8
7
|
return resolve(root, names.find((name) => existsSync(resolve(root, name))) ?? names[0]).replaceAll('\\', '/');
|
|
9
8
|
}
|
|
@@ -22,7 +21,6 @@ export function createUiConfig(config, root) {
|
|
|
22
21
|
}, config.rsbuildConfig, { environments: { client: config.clientConfig ?? {} } });
|
|
23
22
|
return mergeRsbuildConfig(merged, {
|
|
24
23
|
server: { port: config.port ?? config.rsbuildConfig?.server?.port ?? DEFAULT_PORT },
|
|
25
|
-
plugins: [typeCheckPlugin(root)],
|
|
26
24
|
});
|
|
27
25
|
}
|
|
28
26
|
//# sourceMappingURL=ui.js.map
|
package/dist/configs/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/configs/ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAsB,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/configs/ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAsB,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEnE,SAAS,YAAY,CAAC,IAAY,EAAE,KAAe;IAC/C,OAAO,OAAO,CACV,IAAI,EACJ,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CACpE,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAA4B,EAAE,IAAY;IACrE,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC;IACxF,MAAM,MAAM,GAAG,kBAAkB,CAC7B;QACI,GAAG,oBAAoB,EAAE;QACzB,MAAM,EAAE;YACJ,KAAK,EAAE,KAAK,IAAI;gBACZ,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,eAAe,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;aAC/E;YACD,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC;SAC/C;QACD,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE;QAChD,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC;KAC3B,EACD,MAAM,CAAC,aAAa,EACpB,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE,EAAE,EAAE,CAC1D,CAAC;IACF,OAAO,kBAAkB,CAAC,MAAM,EAAE;QAC9B,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,IAAI,YAAY,EAAE;KACtF,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../src/storybook/blocks.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../src/storybook/blocks.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC"}
|
package/dist/typings/config.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import type { EnvironmentConfig, RsbuildConfig } from '@rsbuild/core';
|
|
2
|
+
import type { UserConfig } from 'vite';
|
|
2
3
|
/** Unknown properties are ignored by the CLI; only these fields are public. */
|
|
3
4
|
export interface KoslibsBuilderConfig {
|
|
4
5
|
rsbuildConfig?: RsbuildConfig;
|
|
5
6
|
clientConfig?: EnvironmentConfig;
|
|
7
|
+
/** Vite options used only by Storybook. */
|
|
8
|
+
storybookViteConfig?: UserConfig;
|
|
6
9
|
/** Shared dev-server port. Defaults to 8080. */
|
|
7
10
|
port?: number;
|
|
8
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/typings/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/typings/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAEvC,+EAA+E;AAC/E,MAAM,WAAW,oBAAoB;IACjC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,2CAA2C;IAC3C,mBAAmB,CAAC,EAAE,UAAU,CAAC;IACjC,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export type { Meta, StoryObj, Preview, StorybookConfig } from 'storybook
|
|
1
|
+
export type { Meta, StoryObj, Preview, StorybookConfig } from '@storybook/react-vite';
|
|
2
2
|
//# sourceMappingURL=storybook.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storybook.d.ts","sourceRoot":"","sources":["../../src/typings/storybook.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"storybook.d.ts","sourceRoot":"","sources":["../../src/typings/storybook.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@koslibs/builder",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Shared React application and ESM library toolchain powered by Rspack",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -25,6 +25,10 @@
|
|
|
25
25
|
"types": "./dist/storybook/index.d.ts",
|
|
26
26
|
"import": "./dist/storybook/index.js"
|
|
27
27
|
},
|
|
28
|
+
"./storybook/blocks": {
|
|
29
|
+
"types": "./dist/storybook/blocks.d.ts",
|
|
30
|
+
"import": "./dist/storybook/blocks.js"
|
|
31
|
+
},
|
|
28
32
|
"./testing": {
|
|
29
33
|
"types": "./dist/testing/index.d.ts",
|
|
30
34
|
"import": "./dist/testing/index.js"
|
|
@@ -42,6 +46,7 @@
|
|
|
42
46
|
"files": [
|
|
43
47
|
"dist",
|
|
44
48
|
"README.md",
|
|
49
|
+
"CHANGELOG.md",
|
|
45
50
|
"LICENSE"
|
|
46
51
|
],
|
|
47
52
|
"scripts": {
|
|
@@ -59,33 +64,41 @@
|
|
|
59
64
|
"format": "koslibs-lint format",
|
|
60
65
|
"format:check": "koslibs-lint format:check",
|
|
61
66
|
"prepack": "node scripts/build.mjs",
|
|
62
|
-
"
|
|
63
|
-
"
|
|
67
|
+
"changeset": "koslibs-release add",
|
|
68
|
+
"changeset:check": "koslibs-release check",
|
|
69
|
+
"version-package": "koslibs-release version",
|
|
70
|
+
"release": "koslibs-release publish",
|
|
71
|
+
"prepare": "koslibs-release hooks:install"
|
|
72
|
+
},
|
|
73
|
+
"commitlint": {
|
|
74
|
+
"extends": [
|
|
75
|
+
"@koslibs/configs/commitlint"
|
|
76
|
+
]
|
|
64
77
|
},
|
|
65
78
|
"dependencies": {
|
|
66
79
|
"@playwright/test": "1.63.0",
|
|
67
80
|
"@rsbuild/core": "2.2.11",
|
|
68
81
|
"@rsbuild/plugin-react": "2.1.1",
|
|
69
|
-
"@rsbuild/plugin-type-check": "1.6.0",
|
|
70
82
|
"@rslib/core": "1.0.3",
|
|
71
83
|
"@rstest/core": "0.12.3",
|
|
72
84
|
"@rstest/coverage-istanbul": "0.12.3",
|
|
73
85
|
"@storybook/addon-docs": "10.6.1",
|
|
86
|
+
"@storybook/react-vite": "10.6.1",
|
|
74
87
|
"happy-dom": "20.14.5",
|
|
75
88
|
"storybook": "10.6.1",
|
|
76
|
-
"
|
|
77
|
-
"
|
|
89
|
+
"typescript": "6.0.3",
|
|
90
|
+
"vite": "8.3.2"
|
|
78
91
|
},
|
|
79
92
|
"devDependencies": {
|
|
80
|
-
"@koslibs/configs": "0.
|
|
81
|
-
"@types/node": "^24.
|
|
82
|
-
"@types/react": "^
|
|
83
|
-
"@types/react-dom": "^
|
|
84
|
-
"react": "
|
|
85
|
-
"react-dom": "
|
|
93
|
+
"@koslibs/configs": "1.0.0",
|
|
94
|
+
"@types/node": "^24.19.1",
|
|
95
|
+
"@types/react": "^19.3.0",
|
|
96
|
+
"@types/react-dom": "^19.3.0",
|
|
97
|
+
"react": "19.3.0",
|
|
98
|
+
"react-dom": "19.3.0"
|
|
86
99
|
},
|
|
87
100
|
"peerDependencies": {
|
|
88
|
-
"@koslibs/configs": "^0.
|
|
101
|
+
"@koslibs/configs": "^1.0.0",
|
|
89
102
|
"react": "^18.3.1 || ^19.0.0",
|
|
90
103
|
"react-dom": "^18.3.1 || ^19.0.0"
|
|
91
104
|
},
|