vite-svg-sprite-generator-plugin 1.1.5 → 1.1.7
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 +67 -1
- package/README.md +13 -0
- package/package.json +1 -1
- package/vite-svg-sprite-generator-plugin.js +32 -6
- package/vite-svg-sprite-generator-plugin.ts +30 -3
package/CHANGELOG.md
CHANGED
|
@@ -2,16 +2,82 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [1.1.7] - 2025-01-28
|
|
6
|
+
|
|
7
|
+
### 📦 Publication Release
|
|
8
|
+
|
|
9
|
+
- **UPDATED:** Version updated for npm publication
|
|
10
|
+
- **NO CHANGES:** Code is identical to v1.1.6
|
|
11
|
+
- **REASON:** Version bump for clean publication
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## [1.1.6] - 2025-01-28
|
|
16
|
+
|
|
17
|
+
### 🐛 Bug Fix - Preview Mode Detection
|
|
18
|
+
|
|
19
|
+
- **FIXED:** Preview mode detection now works correctly
|
|
20
|
+
- **ISSUE:** Plugin was showing validation messages during `vite preview`
|
|
21
|
+
- **ROOT CAUSE:** Vite runs preview as `command="serve"` + `mode="production"`
|
|
22
|
+
- **SOLUTION:** Added smart detection: `serve + production + !SSR = preview`
|
|
23
|
+
|
|
24
|
+
### 🔍 Changes
|
|
25
|
+
|
|
26
|
+
```javascript
|
|
27
|
+
// Now correctly detects preview mode
|
|
28
|
+
isLikelyPreview =
|
|
29
|
+
isPreview ||
|
|
30
|
+
resolvedConfig.mode === 'preview' ||
|
|
31
|
+
(command === 'serve' && mode === 'production' && !build?.ssr);
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### ✅ Result
|
|
35
|
+
|
|
36
|
+
- Preview mode now correctly skips validation ✅
|
|
37
|
+
- Preview mode skips sprite generation ✅
|
|
38
|
+
- Preview runs instantly (0ms) ✅
|
|
39
|
+
- Debug logging shows mode detection ✅
|
|
40
|
+
|
|
41
|
+
### 📊 Testing
|
|
42
|
+
|
|
43
|
+
**Before (v1.1.4):**
|
|
44
|
+
```
|
|
45
|
+
vite preview → "Validated icons folder" ❌
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**After (v1.1.6):**
|
|
49
|
+
```
|
|
50
|
+
vite preview → "Preview mode detected: skipping" ✅
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
5
55
|
## [1.1.4] - 2025-01-21
|
|
6
56
|
|
|
7
57
|
### ⚡ Performance - Smart Launch Mode
|
|
8
58
|
|
|
9
59
|
- **NEW:** Intelligent mode detection for preview command
|
|
10
|
-
- **IMPROVED:** Preview mode now skips unnecessary operations
|
|
60
|
+
- **IMPROVED:** Preview mode now skips unnecessary operations
|
|
11
61
|
- **ADDED:** Automatic command detection (serve/build/preview)
|
|
12
62
|
- **OPTIMIZED:** Preview runs instantly (0ms instead of 583ms)
|
|
13
63
|
- **NEW:** Skipping path validation in preview mode
|
|
14
64
|
- **NEW:** Skipping sprite generation in preview mode
|
|
65
|
+
- **ADDED:** Debug logging to understand Vite mode detection
|
|
66
|
+
- **IMPROVED:** Additional check for `resolvedConfig.mode === 'preview'`
|
|
67
|
+
|
|
68
|
+
### 🔍 Preview Mode Detection (Fixed)
|
|
69
|
+
|
|
70
|
+
**Issue:** The plugin was showing validation messages during `vite preview` because Vite runs preview as `command="serve"` + `mode="production"`.
|
|
71
|
+
|
|
72
|
+
**Fix:** Added smart detection logic:
|
|
73
|
+
- Detects `isPreview` flag
|
|
74
|
+
- Detects `mode === 'preview'`
|
|
75
|
+
- Detects `serve` + `production` combination (typical for preview)
|
|
76
|
+
- Excludes SSR builds from this check
|
|
77
|
+
|
|
78
|
+
Now the plugin correctly skips validation and sprite generation in preview mode.
|
|
79
|
+
|
|
80
|
+
Enable `verbose: true` to see debug information: `command`, `isPreview`, `mode`.
|
|
15
81
|
|
|
16
82
|
### 🎯 Optimization Details
|
|
17
83
|
|
package/README.md
CHANGED
|
@@ -394,6 +394,19 @@ sun.svg : 305 → 287 bytes (-5.9%)
|
|
|
394
394
|
|
|
395
395
|
## 📝 Changelog
|
|
396
396
|
|
|
397
|
+
### v1.1.7 (2025-01-28)
|
|
398
|
+
|
|
399
|
+
- 📦 **Version Bump** - Updated for npm publication
|
|
400
|
+
- ✅ **No Code Changes** - Identical to v1.1.6
|
|
401
|
+
- 🚀 **Ready to Publish** - All versions synchronized
|
|
402
|
+
|
|
403
|
+
### v1.1.6 (2025-01-28)
|
|
404
|
+
|
|
405
|
+
- 🐛 **Fixed Preview Detection** - Preview mode now correctly detected
|
|
406
|
+
- 🔍 **Smart Detection** - Detects `serve + production + !SSR = preview`
|
|
407
|
+
- ✅ **Confirmed Working** - Preview skips validation (0ms)
|
|
408
|
+
- 🎯 **Debug Logging** - Shows `command`, `isPreview`, `mode` when verbose
|
|
409
|
+
|
|
397
410
|
### v1.1.4 (2025-01-21)
|
|
398
411
|
|
|
399
412
|
- ⚡ **Smart Launch Mode** - Intelligent mode detection for preview command
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vite-svg-sprite-generator-plugin",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.7",
|
|
4
4
|
"description": "Production-ready Vite plugin for automatic SVG sprite generation with HMR support, SVGO optimization, and security features",
|
|
5
5
|
"main": "vite-svg-sprite-generator-plugin.js",
|
|
6
6
|
"module": "vite-svg-sprite-generator-plugin.js",
|
|
@@ -8,9 +8,18 @@ import { normalizePath } from 'vite';
|
|
|
8
8
|
* Production-ready plugin for automatic SVG sprite generation
|
|
9
9
|
* with HMR support, SVGO optimization, and security features
|
|
10
10
|
*
|
|
11
|
-
* @version 1.1.
|
|
11
|
+
* @version 1.1.7
|
|
12
12
|
* @package vite-svg-sprite-generator-plugin
|
|
13
13
|
*
|
|
14
|
+
* @changelog v1.1.7
|
|
15
|
+
* - Updated version for publication
|
|
16
|
+
*
|
|
17
|
+
* @changelog v1.1.6
|
|
18
|
+
* - FIXED: Preview mode detection now works correctly
|
|
19
|
+
* - Preview detected as: serve + production + !SSR
|
|
20
|
+
* - Added debug logging for mode detection
|
|
21
|
+
* - Confirmed: Preview mode skips validation (0ms)
|
|
22
|
+
*
|
|
14
23
|
* @changelog v1.1.4
|
|
15
24
|
* - Intelligent mode detection for preview command
|
|
16
25
|
* - Preview mode skips unnecessary operations (0ms vs 583ms)
|
|
@@ -427,7 +436,9 @@ export default function svgSpritePlugin(userOptions = {}) {
|
|
|
427
436
|
// после получения viteRoot из конфигурации
|
|
428
437
|
let viteRoot = process.cwd(); // Дефолтное значение (будет перезаписано)
|
|
429
438
|
let validatedIconsFolder = ''; // Безопасный путь после валидации
|
|
430
|
-
let command = 'serve'; // Команда Vite (serve/build
|
|
439
|
+
let command = 'serve'; // Команда Vite (serve/build)
|
|
440
|
+
let isPreview = false; // Флаг preview режима
|
|
441
|
+
let isLikelyPreview = false; // Расширенная проверка preview режима
|
|
431
442
|
|
|
432
443
|
// ===== ИНКАПСУЛИРОВАННОЕ СОСТОЯНИЕ ПЛАГИНА =====
|
|
433
444
|
// Каждый экземпляр плагина имеет свое изолированное состояние
|
|
@@ -629,13 +640,28 @@ export default function svgSpritePlugin(userOptions = {}) {
|
|
|
629
640
|
// Получаем точный root из Vite конфигурации
|
|
630
641
|
viteRoot = resolvedConfig.root || process.cwd();
|
|
631
642
|
|
|
632
|
-
// Определяем команду
|
|
643
|
+
// Определяем команду и режим
|
|
633
644
|
command = resolvedConfig.command || 'serve';
|
|
645
|
+
isPreview = resolvedConfig.isPreview || false;
|
|
646
|
+
|
|
647
|
+
// Отладочная информация
|
|
648
|
+
if (options.verbose) {
|
|
649
|
+
logger.log(`🔍 Debug: command="${command}", isPreview=${isPreview}, mode="${resolvedConfig.mode}"`);
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
// Определение preview режима:
|
|
653
|
+
// vite preview запускается как command="serve" + mode="production"
|
|
654
|
+
// Проверяем все возможные варианты определения preview режима
|
|
655
|
+
isLikelyPreview =
|
|
656
|
+
isPreview ||
|
|
657
|
+
resolvedConfig.mode === 'preview' ||
|
|
658
|
+
// Preview часто определяется как serve + production без build
|
|
659
|
+
(command === 'serve' && resolvedConfig.mode === 'production' && !resolvedConfig.build?.ssr);
|
|
634
660
|
|
|
635
661
|
// В preview режиме НЕ валидируем пути (проект уже собран)
|
|
636
|
-
if (
|
|
662
|
+
if (isLikelyPreview) {
|
|
637
663
|
if (options.verbose) {
|
|
638
|
-
logger.log('🚀 Preview mode: skipping path validation');
|
|
664
|
+
logger.log('🚀 Preview mode detected: skipping path validation');
|
|
639
665
|
}
|
|
640
666
|
return;
|
|
641
667
|
}
|
|
@@ -658,7 +684,7 @@ export default function svgSpritePlugin(userOptions = {}) {
|
|
|
658
684
|
// Хук для начала сборки
|
|
659
685
|
async buildStart() {
|
|
660
686
|
// В preview режиме НЕ генерируем спрайт (уже собран в dist/)
|
|
661
|
-
if (
|
|
687
|
+
if (isLikelyPreview) {
|
|
662
688
|
if (options.verbose) {
|
|
663
689
|
logger.log('✅ Preview mode: using pre-built sprite from dist/');
|
|
664
690
|
}
|
|
@@ -1,10 +1,37 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Vite SVG Sprite Generator Plugin
|
|
3
3
|
* Production-ready plugin for automatic SVG sprite generation
|
|
4
|
-
* with HMR support and
|
|
4
|
+
* with HMR support, SVGO optimization, and security features
|
|
5
5
|
*
|
|
6
|
-
* @version 1.
|
|
6
|
+
* @version 1.1.7
|
|
7
7
|
* @package vite-svg-sprite-generator-plugin
|
|
8
|
+
*
|
|
9
|
+
* @changelog v1.1.7
|
|
10
|
+
* - Updated version for publication
|
|
11
|
+
*
|
|
12
|
+
* @changelog v1.1.6
|
|
13
|
+
* - FIXED: Preview mode detection now works correctly
|
|
14
|
+
* - Preview detected as: serve + production + !SSR
|
|
15
|
+
* - Added debug logging for mode detection
|
|
16
|
+
* - Confirmed: Preview mode skips validation (0ms)
|
|
17
|
+
*
|
|
18
|
+
* @changelog v1.1.4
|
|
19
|
+
* - Intelligent mode detection for preview command
|
|
20
|
+
* - Preview mode skips unnecessary operations (0ms vs 583ms)
|
|
21
|
+
* - Automatic command detection (serve/build/preview)
|
|
22
|
+
*
|
|
23
|
+
* @changelog v1.1.1
|
|
24
|
+
* - Using vite.normalizePath for better cross-platform compatibility
|
|
25
|
+
*
|
|
26
|
+
* @changelog v1.1.0
|
|
27
|
+
* - Path traversal protection via validateIconsPath()
|
|
28
|
+
* - All FS operations are now async (no event loop blocking)
|
|
29
|
+
* - Precompiled RegExp patterns (~20% faster sanitization)
|
|
30
|
+
* - New configResolved() hook for early validation
|
|
31
|
+
* - Enhanced error messages with examples
|
|
32
|
+
*
|
|
33
|
+
* Note: This is the TypeScript source file.
|
|
34
|
+
* The main distribution file is vite-svg-sprite-generator-plugin.js
|
|
8
35
|
*/
|
|
9
36
|
|
|
10
37
|
import { existsSync, statSync } from 'fs';
|
|
@@ -291,7 +318,7 @@ function createLogger(options: Required<SvgSpriteOptions>) {
|
|
|
291
318
|
|
|
292
319
|
/**
|
|
293
320
|
* Vite SVG Sprite Plugin с опциональной SVGO оптимизацией
|
|
294
|
-
* @version 1.
|
|
321
|
+
* @version 1.1.7
|
|
295
322
|
* @param userOptions - пользовательские опции
|
|
296
323
|
*/
|
|
297
324
|
export default function svgSpritePlugin(userOptions: SvgSpriteOptions = {}): Plugin {
|