@rk-web/core 0.0.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.
Files changed (42) hide show
  1. package/bin/cli.js +3 -0
  2. package/dist/cli.d.ts +2 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +62 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/add.d.ts +2 -0
  7. package/dist/commands/add.d.ts.map +1 -0
  8. package/dist/commands/add.js +8 -0
  9. package/dist/commands/add.js.map +1 -0
  10. package/dist/commands/build.d.ts +5 -0
  11. package/dist/commands/build.d.ts.map +1 -0
  12. package/dist/commands/build.js +27 -0
  13. package/dist/commands/build.js.map +1 -0
  14. package/dist/commands/create.d.ts +4 -0
  15. package/dist/commands/create.d.ts.map +1 -0
  16. package/dist/commands/create.js +37 -0
  17. package/dist/commands/create.js.map +1 -0
  18. package/dist/commands/deploy.d.ts +4 -0
  19. package/dist/commands/deploy.d.ts.map +1 -0
  20. package/dist/commands/deploy.js +41 -0
  21. package/dist/commands/deploy.js.map +1 -0
  22. package/dist/commands/dev.d.ts +13 -0
  23. package/dist/commands/dev.d.ts.map +1 -0
  24. package/dist/commands/dev.js +72 -0
  25. package/dist/commands/dev.js.map +1 -0
  26. package/dist/commands/preview.d.ts +5 -0
  27. package/dist/commands/preview.d.ts.map +1 -0
  28. package/dist/commands/preview.js +25 -0
  29. package/dist/commands/preview.js.map +1 -0
  30. package/dist/commands/validate.d.ts +6 -0
  31. package/dist/commands/validate.d.ts.map +1 -0
  32. package/dist/commands/validate.js +35 -0
  33. package/dist/commands/validate.js.map +1 -0
  34. package/dist/index.d.ts +34 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +45 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/index.test.d.ts +2 -0
  39. package/dist/index.test.d.ts.map +1 -0
  40. package/dist/index.test.js +41 -0
  41. package/dist/index.test.js.map +1 -0
  42. package/package.json +71 -0
package/bin/cli.js ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ import '../dist/cli.js'
package/dist/cli.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,62 @@
1
+ import { Command } from 'commander';
2
+ import pc from 'picocolors';
3
+ import { createProject } from './commands/create.js';
4
+ import { devServer } from './commands/dev.js';
5
+ import { buildProject } from './commands/build.js';
6
+ import { previewProject } from './commands/preview.js';
7
+ import { validateProject } from './commands/validate.js';
8
+ import { addComponent } from './commands/add.js';
9
+ import { deployProject } from './commands/deploy.js';
10
+ const program = new Command();
11
+ program
12
+ .name('my-static-builder')
13
+ .description(pc.bold('Сборщик статических сайтов на основе Vite'))
14
+ .version('0.0.1');
15
+ // create command
16
+ program
17
+ .command('create <project-name>')
18
+ .description('Создание нового проекта')
19
+ .option('-t, --template <name>', 'Шаблон для использования (minimal|blog|portfolio|landing)')
20
+ .action(createProject);
21
+ // dev command
22
+ program
23
+ .command('dev')
24
+ .description('Запуск режима разработки с HMR')
25
+ .option('-p, --port <number>', 'Порт для dev сервера', '5173')
26
+ .option('--open', 'Открыть браузер после запуска', true)
27
+ .action(devServer);
28
+ // build command
29
+ program
30
+ .command('build')
31
+ .description('Сборка проекта для продакшена')
32
+ .option('--outDir <path>', 'Директория для сборки', 'dist')
33
+ .option('--minify', 'Минификация кода', true)
34
+ .action(buildProject);
35
+ // preview command
36
+ program
37
+ .command('preview')
38
+ .description('Превью собранного сайта')
39
+ .option('-p, --port <number>', 'Порт для preview сервера', '4173')
40
+ .option('--open', 'Открыть браузер после запуска', true)
41
+ .action(previewProject);
42
+ // validate command
43
+ program
44
+ .command('validate')
45
+ .description('Валидация сайта')
46
+ .option('--html', 'Проверка HTML', true)
47
+ .option('--a11y', 'Проверка доступности', true)
48
+ .option('--lighthouse', 'Lighthouse аудит', true)
49
+ .action(validateProject);
50
+ // add command
51
+ program
52
+ .command('add <type> <name>')
53
+ .description('Добавление компонента')
54
+ .action(addComponent);
55
+ // deploy command
56
+ program
57
+ .command('deploy')
58
+ .description('Сборка + валидация + деплой')
59
+ .option('--skip-validate', 'Пропустить валидацию', false)
60
+ .action(deployProject);
61
+ program.parse();
62
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,mBAAmB,CAAC;KACzB,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;KACjE,OAAO,CAAC,OAAO,CAAC,CAAA;AAEnB,iBAAiB;AACjB,OAAO;KACJ,OAAO,CAAC,uBAAuB,CAAC;KAChC,WAAW,CAAC,yBAAyB,CAAC;KACtC,MAAM,CAAC,uBAAuB,EAAE,2DAA2D,CAAC;KAC5F,MAAM,CAAC,aAAa,CAAC,CAAA;AAExB,cAAc;AACd,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,CAAC;KAC7D,MAAM,CAAC,QAAQ,EAAE,+BAA+B,EAAE,IAAI,CAAC;KACvD,MAAM,CAAC,SAAS,CAAC,CAAA;AAEpB,gBAAgB;AAChB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,CAAC;KAC1D,MAAM,CAAC,UAAU,EAAE,kBAAkB,EAAE,IAAI,CAAC;KAC5C,MAAM,CAAC,YAAY,CAAC,CAAA;AAEvB,kBAAkB;AAClB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,yBAAyB,CAAC;KACtC,MAAM,CAAC,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,CAAC;KACjE,MAAM,CAAC,QAAQ,EAAE,+BAA+B,EAAE,IAAI,CAAC;KACvD,MAAM,CAAC,cAAc,CAAC,CAAA;AAEzB,mBAAmB;AACnB,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,iBAAiB,CAAC;KAC9B,MAAM,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,CAAC;KACvC,MAAM,CAAC,QAAQ,EAAE,sBAAsB,EAAE,IAAI,CAAC;KAC9C,MAAM,CAAC,cAAc,EAAE,kBAAkB,EAAE,IAAI,CAAC;KAChD,MAAM,CAAC,eAAe,CAAC,CAAA;AAE1B,cAAc;AACd,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,uBAAuB,CAAC;KACpC,MAAM,CAAC,YAAY,CAAC,CAAA;AAEvB,iBAAiB;AACjB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,iBAAiB,EAAE,sBAAsB,EAAE,KAAK,CAAC;KACxD,MAAM,CAAC,aAAa,CAAC,CAAA;AAExB,OAAO,CAAC,KAAK,EAAE,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function addComponent(type: string, name: string): Promise<void>;
2
+ //# sourceMappingURL=add.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAEA,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,iBAK5D"}
@@ -0,0 +1,8 @@
1
+ import pc from 'picocolors';
2
+ export async function addComponent(type, name) {
3
+ console.log(pc.blue('Добавление компонента...'));
4
+ console.log(`Тип: ${pc.bold(type)}`);
5
+ console.log(`Имя: ${pc.bold(name)}`);
6
+ console.log(pc.yellow('Функционал в разработке'));
7
+ }
8
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,IAAY;IAC3D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAA;IAChD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACpC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACpC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAA;AACnD,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function buildProject(options: {
2
+ outDir?: string;
3
+ minify?: boolean;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAIA,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,iBAwBhF"}
@@ -0,0 +1,27 @@
1
+ import { build } from 'vite';
2
+ import { resolve } from 'node:path';
3
+ import pc from 'picocolors';
4
+ export async function buildProject(options) {
5
+ console.log(pc.blue('\n🔨 Сборка проекта...\n'));
6
+ const root = process.cwd();
7
+ const outDir = options.outDir || 'dist';
8
+ const minify = options.minify !== false;
9
+ try {
10
+ await build({
11
+ root,
12
+ build: {
13
+ outDir: resolve(root, outDir),
14
+ minify,
15
+ emptyOutDir: true
16
+ }
17
+ });
18
+ console.log(pc.green('\n✓ Сборка завершена успешно!'));
19
+ console.log(pc.gray(`Результат в: ${pc.dim(outDir)}\n`));
20
+ }
21
+ catch (error) {
22
+ console.error(pc.red('\nОшибка сборки:'));
23
+ console.error(error);
24
+ process.exit(1);
25
+ }
26
+ }
27
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA8C;IAC/E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAA;IAEhD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAA;IACvC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,KAAK,CAAA;IAEvC,IAAI,CAAC;QACH,MAAM,KAAK,CAAC;YACV,IAAI;YACJ,KAAK,EAAE;gBACL,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;gBAC7B,MAAM;gBACN,WAAW,EAAE,IAAI;aAClB;SACF,CAAC,CAAA;QAEF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAA;QACtD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAC1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAA;QACzC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function createProject(projectName: string, options: {
2
+ template?: string;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAIA,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,iBAqCtF"}
@@ -0,0 +1,37 @@
1
+ import pc from 'picocolors';
2
+ import prompts from 'prompts';
3
+ import { createProject as create } from '@rk-web/create';
4
+ export async function createProject(projectName, options) {
5
+ let name = projectName;
6
+ if (!name) {
7
+ const response = await prompts({
8
+ type: 'text',
9
+ name: 'name',
10
+ message: 'Введите имя проекта:',
11
+ initial: 'my-site'
12
+ });
13
+ name = response.name;
14
+ }
15
+ if (!name) {
16
+ console.error(pc.red('Имя проекта не указано'));
17
+ process.exit(1);
18
+ }
19
+ let template = options.template;
20
+ if (!options.template) {
21
+ const response = await prompts({
22
+ type: 'select',
23
+ name: 'template',
24
+ message: 'Выберите шаблон:',
25
+ choices: [
26
+ { title: 'Минимальный', value: 'minimal', description: 'Базовая структура' },
27
+ { title: 'Блог', value: 'blog', description: 'Шаблон для блога' },
28
+ { title: 'Портфолио', value: 'portfolio', description: 'Шаблон портфолио' },
29
+ { title: 'Лендинг', value: 'landing', description: 'Одностраничный сайт' }
30
+ ],
31
+ initial: 0
32
+ });
33
+ template = response.template;
34
+ }
35
+ await create(name, template || 'minimal');
36
+ }
37
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,aAAa,IAAI,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAExD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,WAAmB,EAAE,OAA8B;IACrF,IAAI,IAAI,GAAG,WAAW,CAAA;IAEtB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;YAC7B,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,sBAAsB;YAC/B,OAAO,EAAE,SAAS;SACnB,CAAC,CAAA;QACF,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAA;IACtB,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAA;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;IAE/B,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;YAC7B,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,kBAAkB;YAC3B,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,mBAAmB,EAAE;gBAC5E,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE;gBACjE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE;gBAC3E,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,qBAAqB,EAAE;aAC3E;YACD,OAAO,EAAE,CAAC;SACX,CAAC,CAAA;QACF,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAA;IAC9B,CAAC;IAED,MAAM,MAAM,CAAC,IAAI,EAAE,QAAQ,IAAI,SAAS,CAAC,CAAA;AAC3C,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function deployProject(options: {
2
+ skipValidate?: boolean;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAIA,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,iBAuCtE"}
@@ -0,0 +1,41 @@
1
+ import { build } from 'vite';
2
+ import { resolve } from 'node:path';
3
+ import pc from 'picocolors';
4
+ export async function deployProject(options) {
5
+ console.log(pc.blue('\n🚀 Деплой проекта...\n'));
6
+ const root = process.cwd();
7
+ const skipValidate = options.skipValidate || false;
8
+ try {
9
+ // Шаг 1: Сборка
10
+ console.log(pc.gray('Шаг 1/3: Сборка проекта...'));
11
+ await build({
12
+ root,
13
+ build: {
14
+ outDir: resolve(root, 'dist'),
15
+ minify: true,
16
+ emptyOutDir: true
17
+ }
18
+ });
19
+ console.log(pc.green('✓ Сборка завершена\n'));
20
+ // Шаг 2: Валидация
21
+ if (!skipValidate) {
22
+ console.log(pc.gray('Шаг 2/3: Валидация...'));
23
+ console.log(pc.gray('(валидация выполняется автоматически плагинами)'));
24
+ console.log(pc.green('✓ Валидация завершена\n'));
25
+ }
26
+ else {
27
+ console.log(pc.gray('Шаг 2/3: Валидация пропущена\n'));
28
+ }
29
+ // Шаг 3: Деплой (заглушка)
30
+ console.log(pc.gray('Шаг 3/3: Деплой...'));
31
+ console.log(pc.yellow('⚠ Деплой не настроен. Настройте CI/CD для автоматического деплоя.'));
32
+ console.log(pc.gray('Файлы для деплоя находятся в: dist/\n'));
33
+ console.log(pc.green('\n✅ Деплой завершен!\n'));
34
+ }
35
+ catch (error) {
36
+ console.error(pc.red('\nОшибка деплоя:'));
37
+ console.error(error.message || error);
38
+ process.exit(1);
39
+ }
40
+ }
41
+ //# sourceMappingURL=deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAmC;IACrE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAA;IAEhD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IAC1B,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,KAAK,CAAA;IAElD,IAAI,CAAC;QACH,gBAAgB;QAChB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAA;QAClD,MAAM,KAAK,CAAC;YACV,IAAI;YACJ,KAAK,EAAE;gBACL,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;gBAC7B,MAAM,EAAE,IAAI;gBACZ,WAAW,EAAE,IAAI;aAClB;SACF,CAAC,CAAA;QACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAA;QAE7C,mBAAmB;QACnB,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAA;YAC7C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAA;YACvE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAA;QAClD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAA;QACxD,CAAC;QAED,2BAA2B;QAC3B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAA;QAC1C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,mEAAmE,CAAC,CAAC,CAAA;QAC3F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAA;QAE7D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAA;IACjD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAA;QACzC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAA;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ export declare function devServer(options: {
2
+ port?: string;
3
+ open?: boolean;
4
+ }): Promise<void>;
5
+ export declare function buildProject(options: {
6
+ outDir?: string;
7
+ minify?: boolean;
8
+ }): Promise<void>;
9
+ export declare function previewProject(options: {
10
+ port?: string;
11
+ open?: boolean;
12
+ }): Promise<void>;
13
+ //# sourceMappingURL=dev.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAIA,wBAAsB,SAAS,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,iBA0BzE;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,iBAwBhF;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,iBAwB9E"}
@@ -0,0 +1,72 @@
1
+ import { createServer, build, preview } from 'vite';
2
+ import { resolve } from 'node:path';
3
+ import pc from 'picocolors';
4
+ export async function devServer(options) {
5
+ console.log(pc.blue('\n🚀 Запуск dev сервера...\n'));
6
+ const root = process.cwd();
7
+ const port = parseInt(options.port || '5173', 10);
8
+ const open = options.open !== false;
9
+ try {
10
+ const server = await createServer({
11
+ root,
12
+ server: {
13
+ port,
14
+ open
15
+ }
16
+ });
17
+ await server.listen();
18
+ server.printUrls();
19
+ console.log(pc.gray('\nНажмите Ctrl+C для остановки\n'));
20
+ }
21
+ catch (error) {
22
+ console.error(pc.red('\nОшибка запуска dev сервера:'));
23
+ console.error(error);
24
+ process.exit(1);
25
+ }
26
+ }
27
+ export async function buildProject(options) {
28
+ console.log(pc.blue('\n🔨 Сборка проекта...\n'));
29
+ const root = process.cwd();
30
+ const outDir = options.outDir || 'dist';
31
+ const minify = options.minify !== false;
32
+ try {
33
+ await build({
34
+ root,
35
+ build: {
36
+ outDir: resolve(root, outDir),
37
+ minify,
38
+ emptyOutDir: true
39
+ }
40
+ });
41
+ console.log(pc.green('\n✓ Сборка завершена успешно!'));
42
+ console.log(pc.gray(`Результат в: ${pc.dim(outDir)}\n`));
43
+ }
44
+ catch (error) {
45
+ console.error(pc.red('\nОшибка сборки:'));
46
+ console.error(error);
47
+ process.exit(1);
48
+ }
49
+ }
50
+ export async function previewProject(options) {
51
+ console.log(pc.blue('\n👁 Запуск preview сервера...\n'));
52
+ const root = process.cwd();
53
+ const port = parseInt(options.port || '4173', 10);
54
+ const open = options.open !== false;
55
+ try {
56
+ const server = await preview({
57
+ root,
58
+ preview: {
59
+ port,
60
+ open
61
+ }
62
+ });
63
+ server.printUrls();
64
+ console.log(pc.gray('\nНажмите Ctrl+C для остановки\n'));
65
+ }
66
+ catch (error) {
67
+ console.error(pc.red('\nОшибка запуска preview сервера:'));
68
+ console.error(error);
69
+ process.exit(1);
70
+ }
71
+ }
72
+ //# sourceMappingURL=dev.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function previewProject(options: {
2
+ port?: string;
3
+ open?: boolean;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=preview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../src/commands/preview.ts"],"names":[],"mappings":"AAGA,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,iBAwB9E"}
@@ -0,0 +1,25 @@
1
+ import { preview } from 'vite';
2
+ import pc from 'picocolors';
3
+ export async function previewProject(options) {
4
+ console.log(pc.blue('\n👁 Запуск preview сервера...\n'));
5
+ const root = process.cwd();
6
+ const port = parseInt(options.port || '4173', 10);
7
+ const open = options.open !== false;
8
+ try {
9
+ const server = await preview({
10
+ root,
11
+ preview: {
12
+ port,
13
+ open
14
+ }
15
+ });
16
+ server.printUrls();
17
+ console.log(pc.gray('\nНажмите Ctrl+C для остановки\n'));
18
+ }
19
+ catch (error) {
20
+ console.error(pc.red('\nОшибка запуска preview сервера:'));
21
+ console.error(error);
22
+ process.exit(1);
23
+ }
24
+ }
25
+ //# sourceMappingURL=preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview.js","sourceRoot":"","sources":["../../src/commands/preview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC9B,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAA0C;IAC7E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAA;IAExD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IAC1B,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC,CAAA;IACjD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,KAAK,CAAA;IAEnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;YAC3B,IAAI;YACJ,OAAO,EAAE;gBACP,IAAI;gBACJ,IAAI;aACL;SACF,CAAC,CAAA;QAEF,MAAM,CAAC,SAAS,EAAE,CAAA;QAElB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAA;IAC1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAA;QAC1D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function validateProject(options: {
2
+ html?: boolean;
3
+ a11y?: boolean;
4
+ lighthouse?: boolean;
5
+ }): Promise<void>;
6
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAIA,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,iBAkCtG"}
@@ -0,0 +1,35 @@
1
+ import { build } from 'vite';
2
+ import { resolve } from 'node:path';
3
+ import pc from 'picocolors';
4
+ export async function validateProject(options) {
5
+ console.log(pc.blue('\n🔍 Валидация проекта...\n'));
6
+ const root = process.cwd();
7
+ try {
8
+ // Сначала собираем проект
9
+ console.log(pc.gray('Сборка проекта...'));
10
+ await build({
11
+ root,
12
+ build: {
13
+ outDir: resolve(root, 'dist'),
14
+ minify: true,
15
+ emptyOutDir: true
16
+ }
17
+ });
18
+ console.log(pc.green('✓ Сборка завершена\n'));
19
+ // Валидация будет выполнена плагином validate автоматически
20
+ console.log(pc.gray('Запуск валидации...'));
21
+ console.log(pc.gray(`HTML: ${pc.bold(String(options.html !== false))}`));
22
+ console.log(pc.gray(`Accessibility: ${pc.bold(String(options.a11y !== false))}`));
23
+ console.log(pc.gray(`Lighthouse: ${pc.bold(String(options.lighthouse !== false))}`));
24
+ // Плагин validate вызовет process.exit(1) при ошибках
25
+ console.log(pc.green('\n✓ Валидация завершена\n'));
26
+ }
27
+ catch (error) {
28
+ if (error.code !== 'ERR_EXIT') {
29
+ console.error(pc.red('\nОшибка валидации:'));
30
+ console.error(error.message || error);
31
+ }
32
+ process.exit(1);
33
+ }
34
+ }
35
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAiE;IACrG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAA;IAEnD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IAE1B,IAAI,CAAC;QACH,0BAA0B;QAC1B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAA;QACzC,MAAM,KAAK,CAAC;YACV,IAAI;YACJ,KAAK,EAAE;gBACL,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;gBAC7B,MAAM,EAAE,IAAI;gBACZ,WAAW,EAAE,IAAI;aAClB;SACF,CAAC,CAAA;QAEF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAA;QAE7C,4DAA4D;QAC5D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAA;QAC3C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACxE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACjF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAEpF,sDAAsD;QACtD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAA;IACpD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAA;YAC5C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,CAAA;QACvC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { Plugin } from 'vite';
2
+ import { type HtmlTemplateOptions } from '@rk-web/vite-plugin-html-template';
3
+ import { type ImageOptimizerOptions } from '@rk-web/vite-plugin-image-optimizer';
4
+ import { type FontOptimizerOptions } from '@rk-web/vite-plugin-font-optimizer';
5
+ import { type SeoOptions } from '@rk-web/vite-plugin-seo';
6
+ import { type ValidateOptions } from '@rk-web/vite-plugin-validate';
7
+ import { type CriticalOptions } from '@rk-web/vite-plugin-critical';
8
+ export interface StaticBuilderOptions {
9
+ /** Шаблонизатор */
10
+ template?: HtmlTemplateOptions;
11
+ /** Оптимизация изображений */
12
+ images?: ImageOptimizerOptions;
13
+ /** Оптимизация шрифтов */
14
+ fonts?: FontOptimizerOptions;
15
+ /** SEO оптимизация */
16
+ seo?: SeoOptions;
17
+ /** Валидация */
18
+ validate?: ValidateOptions;
19
+ /** Критический CSS */
20
+ critical?: CriticalOptions;
21
+ }
22
+ /**
23
+ * Главный плагин сборщика статических сайтов
24
+ * Объединяет все плагины в единую конфигурацию
25
+ */
26
+ export declare function staticBuilder(options?: StaticBuilderOptions): Plugin[];
27
+ export { htmlTemplate } from '@rk-web/vite-plugin-html-template';
28
+ export { imageOptimizer } from '@rk-web/vite-plugin-image-optimizer';
29
+ export { fontOptimizer } from '@rk-web/vite-plugin-font-optimizer';
30
+ export { seo } from '@rk-web/vite-plugin-seo';
31
+ export { validate } from '@rk-web/vite-plugin-validate';
32
+ export { critical } from '@rk-web/vite-plugin-critical';
33
+ export type { HtmlTemplateOptions, ImageOptimizerOptions, FontOptimizerOptions, SeoOptions, ValidateOptions, CriticalOptions };
34
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAc,MAAM,MAAM,CAAA;AAC9C,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAC1F,OAAO,EAAkB,KAAK,qBAAqB,EAAE,MAAM,qCAAqC,CAAA;AAChG,OAAO,EAAiB,KAAK,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AAC7F,OAAO,EAAO,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAY,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC7E,OAAO,EAAY,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAE7E,MAAM,WAAW,oBAAoB;IACnC,mBAAmB;IACnB,QAAQ,CAAC,EAAE,mBAAmB,CAAA;IAC9B,8BAA8B;IAC9B,MAAM,CAAC,EAAE,qBAAqB,CAAA;IAC9B,0BAA0B;IAC1B,KAAK,CAAC,EAAE,oBAAoB,CAAA;IAC5B,sBAAsB;IACtB,GAAG,CAAC,EAAE,UAAU,CAAA;IAChB,gBAAgB;IAChB,QAAQ,CAAC,EAAE,eAAe,CAAA;IAC1B,sBAAsB;IACtB,QAAQ,CAAC,EAAE,eAAe,CAAA;CAC3B;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,MAAM,EAAE,CAkC1E;AAED,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAA;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AAClE,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAEvD,YAAY,EACV,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,UAAU,EACV,eAAe,EACf,eAAe,EAChB,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,45 @@
1
+ import { htmlTemplate } from '@rk-web/vite-plugin-html-template';
2
+ import { imageOptimizer } from '@rk-web/vite-plugin-image-optimizer';
3
+ import { fontOptimizer } from '@rk-web/vite-plugin-font-optimizer';
4
+ import { seo } from '@rk-web/vite-plugin-seo';
5
+ import { validate } from '@rk-web/vite-plugin-validate';
6
+ import { critical } from '@rk-web/vite-plugin-critical';
7
+ /**
8
+ * Главный плагин сборщика статических сайтов
9
+ * Объединяет все плагины в единую конфигурацию
10
+ */
11
+ export function staticBuilder(options = {}) {
12
+ const plugins = [];
13
+ // Плагин шаблонизатора
14
+ if (options.template) {
15
+ plugins.push(htmlTemplate(options.template));
16
+ }
17
+ // Плагин оптимизации изображений
18
+ if (options.images) {
19
+ plugins.push(imageOptimizer(options.images));
20
+ }
21
+ // Плагин оптимизации шрифтов
22
+ if (options.fonts) {
23
+ plugins.push(fontOptimizer(options.fonts));
24
+ }
25
+ // SEO плагин
26
+ if (options.seo) {
27
+ plugins.push(seo(options.seo));
28
+ }
29
+ // Плагин критического CSS
30
+ if (options.critical) {
31
+ plugins.push(critical(options.critical));
32
+ }
33
+ // Плагин валидации (всегда последним)
34
+ if (options.validate) {
35
+ plugins.push(validate(options.validate));
36
+ }
37
+ return plugins;
38
+ }
39
+ export { htmlTemplate } from '@rk-web/vite-plugin-html-template';
40
+ export { imageOptimizer } from '@rk-web/vite-plugin-image-optimizer';
41
+ export { fontOptimizer } from '@rk-web/vite-plugin-font-optimizer';
42
+ export { seo } from '@rk-web/vite-plugin-seo';
43
+ export { validate } from '@rk-web/vite-plugin-validate';
44
+ export { critical } from '@rk-web/vite-plugin-critical';
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAA4B,MAAM,mCAAmC,CAAA;AAC1F,OAAO,EAAE,cAAc,EAA8B,MAAM,qCAAqC,CAAA;AAChG,OAAO,EAAE,aAAa,EAA6B,MAAM,oCAAoC,CAAA;AAC7F,OAAO,EAAE,GAAG,EAAmB,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAwB,MAAM,8BAA8B,CAAA;AAC7E,OAAO,EAAE,QAAQ,EAAwB,MAAM,8BAA8B,CAAA;AAiB7E;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,UAAgC,EAAE;IAC9D,MAAM,OAAO,GAAa,EAAE,CAAA;IAE5B,uBAAuB;IACvB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC9C,CAAC;IAED,iCAAiC;IACjC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;IAC9C,CAAC;IAED,6BAA6B;IAC7B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;IAC5C,CAAC;IAED,aAAa;IACb,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;IAChC,CAAC;IAED,0BAA0B;IAC1B,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,sCAAsC;IACtC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAA;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AAClE,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,41 @@
1
+ import { describe, expect, it, vi } from 'vitest';
2
+ vi.mock('@rk-web/vite-plugin-html-template', () => ({
3
+ htmlTemplate: () => ({ name: 'vite-plugin-html-template' })
4
+ }));
5
+ vi.mock('@rk-web/vite-plugin-image-optimizer', () => ({
6
+ imageOptimizer: () => ({ name: 'vite-plugin-image-optimizer' })
7
+ }));
8
+ vi.mock('@rk-web/vite-plugin-font-optimizer', () => ({
9
+ fontOptimizer: () => ({ name: 'vite-plugin-font-optimizer' })
10
+ }));
11
+ vi.mock('@rk-web/vite-plugin-seo', () => ({
12
+ seo: () => ({ name: 'vite-plugin-seo' })
13
+ }));
14
+ vi.mock('@rk-web/vite-plugin-critical', () => ({
15
+ critical: () => ({ name: 'vite-plugin-critical' })
16
+ }));
17
+ vi.mock('@rk-web/vite-plugin-validate', () => ({
18
+ validate: () => ({ name: 'vite-plugin-validate' })
19
+ }));
20
+ import { staticBuilder } from './index.js';
21
+ describe('staticBuilder', () => {
22
+ it('returns plugins in expected order when all options enabled', () => {
23
+ const plugins = staticBuilder({
24
+ template: {},
25
+ images: {},
26
+ fonts: {},
27
+ seo: {},
28
+ critical: {},
29
+ validate: {}
30
+ });
31
+ expect(plugins.map((plugin) => plugin.name)).toEqual([
32
+ 'vite-plugin-html-template',
33
+ 'vite-plugin-image-optimizer',
34
+ 'vite-plugin-font-optimizer',
35
+ 'vite-plugin-seo',
36
+ 'vite-plugin-critical',
37
+ 'vite-plugin-validate'
38
+ ]);
39
+ });
40
+ });
41
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAEjD,EAAE,CAAC,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE,CAAC,CAAC;IAClD,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE,CAAC;CAC5D,CAAC,CAAC,CAAA;AACH,EAAE,CAAC,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE,CAAC,CAAC;IACpD,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC;CAChE,CAAC,CAAC,CAAA;AACH,EAAE,CAAC,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE,CAAC,CAAC;IACnD,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC;CAC9D,CAAC,CAAC,CAAA;AACH,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC;IACxC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;CACzC,CAAC,CAAC,CAAA;AACH,EAAE,CAAC,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7C,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC;CACnD,CAAC,CAAC,CAAA;AACH,EAAE,CAAC,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7C,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC;CACnD,CAAC,CAAC,CAAA;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE1C,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,OAAO,GAAG,aAAa,CAAC;YAC5B,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,EAAE;YACT,GAAG,EAAE,EAAE;YACP,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;SACb,CAAC,CAAA;QAEF,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YACnD,2BAA2B;YAC3B,6BAA6B;YAC7B,4BAA4B;YAC5B,iBAAiB;YACjB,sBAAsB;YACtB,sBAAsB;SACvB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
package/package.json ADDED
@@ -0,0 +1,71 @@
1
+ {
2
+ "name": "@rk-web/core",
3
+ "version": "0.0.1",
4
+ "description": "Ядро сборщика статических сайтов",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "module": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": {
12
+ "types": "./dist/index.d.ts",
13
+ "default": "./dist/index.js"
14
+ }
15
+ }
16
+ },
17
+ "bin": {
18
+ "my-static-builder": "./bin/cli.js"
19
+ },
20
+ "files": [
21
+ "dist",
22
+ "bin"
23
+ ],
24
+ "scripts": {
25
+ "build": "pnpm --filter @rk-web/create build && pnpm --filter \"@rk-web/vite-plugin-*\" build && tsc",
26
+ "build:analyze": "vite build --config vite.analyze.config.ts",
27
+ "dev": "tsc --watch",
28
+ "test": "pnpm --filter @rk-web/create build && pnpm --filter \"@rk-web/vite-plugin-*\" build && vitest --passWithNoTests",
29
+ "test:unit": "pnpm --filter @rk-web/create build && pnpm --filter \"@rk-web/vite-plugin-*\" build && vitest run --passWithNoTests",
30
+ "test:coverage": "pnpm --filter @rk-web/create build && pnpm --filter \"@rk-web/vite-plugin-*\" build && vitest run --coverage --passWithNoTests --coverage.thresholds.lines=5 --coverage.thresholds.functions=5 --coverage.thresholds.statements=5 --coverage.thresholds.branches=5",
31
+ "lint": "eslint src --ext .ts",
32
+ "typecheck": "pnpm --filter @rk-web/create build && pnpm --filter \"@rk-web/vite-plugin-*\" build && tsc --noEmit",
33
+ "clean": "rimraf dist dist-analyze"
34
+ },
35
+ "keywords": [
36
+ "vite",
37
+ "static-site",
38
+ "builder"
39
+ ],
40
+ "author": "",
41
+ "license": "MIT",
42
+ "dependencies": {
43
+ "commander": "^12.0.0",
44
+ "picocolors": "^1.0.0",
45
+ "prompts": "^2.4.2",
46
+ "vite": "^6.4.1",
47
+ "@rk-web/create": "workspace:*",
48
+ "@rk-web/vite-plugin-html-template": "workspace:*",
49
+ "@rk-web/vite-plugin-image-optimizer": "workspace:*",
50
+ "@rk-web/vite-plugin-font-optimizer": "workspace:*",
51
+ "@rk-web/vite-plugin-seo": "workspace:*",
52
+ "@rk-web/vite-plugin-validate": "workspace:*",
53
+ "@rk-web/vite-plugin-critical": "workspace:*"
54
+ },
55
+ "devDependencies": {
56
+ "@types/node": "^20.11.0",
57
+ "@types/prompts": "^2.4.9",
58
+ "typescript": "^5.4.0",
59
+ "vitest": "^1.4.0",
60
+ "rollup-plugin-visualizer": "^5.13.0"
61
+ },
62
+ "peerDependencies": {
63
+ "vite": "^6.0.0"
64
+ },
65
+ "engines": {
66
+ "node": ">=18.0.0"
67
+ },
68
+ "publishConfig": {
69
+ "access": "public"
70
+ }
71
+ }