zcw-shared 1.10.5 → 1.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -510,4 +510,146 @@ playground/ # 功能验证环境(用于测试shared包功能,有
510
510
  - [ ] JSDoc 文档完整
511
511
  - [ ] 遵循命名规范
512
512
  - [ ] 通过 playground 验证
513
- - [ ] 符合项目架构原则
513
+ - [ ] 符合项目架构原则
514
+
515
+ ## Git Commit 规范
516
+
517
+ ### 12. Commit 消息格式要求
518
+
519
+ #### 12.1 基本格式
520
+
521
+ 所有 commit 消息必须遵循以下格式:
522
+
523
+ ```
524
+ <type>(<scope>): <description> - <changed_files>
525
+
526
+ [optional body]
527
+
528
+ [optional footer]
529
+ ```
530
+
531
+ **必填字段**:
532
+ - `type`: 变更类型(见下方类型说明)
533
+ - `scope`: 影响范围(可选,但推荐)
534
+ - `description`: 简短描述变更内容
535
+ - `changed_files`: **必须包含所有变更的文件名**
536
+
537
+ #### 12.2 变更类型 (type)
538
+
539
+ - **feat**: 新功能
540
+ - **fix**: 修复 bug
541
+ - **docs**: 文档变更
542
+ - **style**: 代码格式变更(不影响功能)
543
+ - **refactor**: 重构(既不是新功能也不是修复)
544
+ - **test**: 测试相关变更
545
+ - **chore**: 构建过程或辅助工具的变更
546
+ - **perf**: 性能优化
547
+ - **ci**: CI/CD 相关变更
548
+
549
+ #### 12.3 影响范围 (scope)
550
+
551
+ 推荐使用以下范围标识:
552
+ - **functions**: 函数相关变更
553
+ - **types**: 类型定义变更
554
+ - **constants**: 常量定义变更
555
+ - **build**: 构建配置变更
556
+ - **docs**: 文档变更
557
+ - **test**: 测试相关变更
558
+
559
+ #### 12.4 文件名要求
560
+
561
+ **必须在 commit 消息中包含所有变更的文件名**,格式如下:
562
+
563
+ - 单个文件:`- convertColor.ts`
564
+ - 多个文件:`- convertColor.ts, convertColor.test.ts`
565
+ - 新增文件:`- add: newFunction.ts`
566
+ - 删除文件:`- remove: oldFunction.ts`
567
+ - 重命名文件:`- rename: oldName.ts -> newName.ts`
568
+
569
+ #### 12.5 Commit 示例
570
+
571
+ **修复示例**:
572
+ ```
573
+ fix(functions): 修复 includeAlpha 参数强制透明度功能 - convertColor.ts, convertColor.test.ts
574
+
575
+ - 修复 formatHex 函数中 includeAlpha 逻辑
576
+ - 更新 ColorFormatters 中 rgb 和 hsl 格式化器
577
+ - 添加 includeAlpha 强制透明度测试用例
578
+ ```
579
+
580
+ **新功能示例**:
581
+ ```
582
+ feat(functions): 添加图像压缩功能 - add: compressImage.ts, imageTypes.ts
583
+
584
+ - 实现基于 Sharp 的图像压缩功能
585
+ - 支持 JPEG、PNG、WebP 格式
586
+ - 添加压缩质量和尺寸控制选项
587
+ ```
588
+
589
+ **文档更新示例**:
590
+ ```
591
+ docs: 添加 commit 规范要求 - README.md
592
+
593
+ - 添加 commit 消息格式要求
594
+ - 明确文件名包含规则
595
+ - 说明版本发布策略
596
+ ```
597
+
598
+ ### 13. 版本发布策略
599
+
600
+ #### 13.1 版本类型选择
601
+
602
+ 根据变更类型选择合适的版本发布命令:
603
+
604
+ **Patch 版本 (x.x.X)**:
605
+ - **使用场景**: 修复 bug、文档更新、代码格式调整
606
+ - **发布命令**: `npm run publish:patch`
607
+ - **对应 commit 类型**: `fix`, `docs`, `style`, `chore`
608
+
609
+ **Minor 版本 (x.X.x)**:
610
+ - **使用场景**: 新功能添加、API 扩展(向后兼容)
611
+ - **发布命令**: `npm run publish:minor`
612
+ - **对应 commit 类型**: `feat`, `perf`
613
+
614
+ **Major 版本 (X.x.x)**:
615
+ - **使用场景**: 破坏性变更、API 重构
616
+ - **发布命令**: `npm run publish:major`
617
+ - **对应 commit 类型**: 带有 `BREAKING CHANGE` 的任何类型
618
+
619
+ #### 13.2 发布流程
620
+
621
+ 1. **提交变更**: 确保 commit 消息符合规范
622
+ 2. **选择版本**: 根据变更类型选择合适的版本
623
+ 3. **执行发布**: 运行对应的发布命令
624
+ 4. **验证发布**: 确认新版本已成功发布到 npm
625
+
626
+ #### 13.3 发布检查清单
627
+
628
+ 发布前请确保:
629
+ - [ ] 所有测试通过
630
+ - [ ] 代码符合编码规范
631
+ - [ ] Commit 消息包含变更文件名
632
+ - [ ] 选择了正确的版本类型
633
+ - [ ] 更新了相关文档(如需要)
634
+
635
+ #### 13.4 版本发布示例
636
+
637
+ **修复发布**:
638
+ ```bash
639
+ # 1. 提交修复
640
+ git add .
641
+ git commit -m "fix(functions): 修复颜色转换精度问题 - convertColor.ts, colorUtils.ts"
642
+
643
+ # 2. 发布 patch 版本
644
+ npm run publish:patch
645
+ ```
646
+
647
+ **新功能发布**:
648
+ ```bash
649
+ # 1. 提交新功能
650
+ git add .
651
+ git commit -m "feat(functions): 添加图像水印功能 - add: addWatermark.ts, watermarkTypes.ts"
652
+
653
+ # 2. 发布 minor 版本
654
+ npm run publish:minor
655
+ ```
@@ -1,4 +1,4 @@
1
- import type { ColorReference } from '../../../types/color.d';
1
+ import type { ColorReference } from '../../../types/design-system.d';
2
2
  export declare function deduplicateColors(colors: ColorReference[]): ColorReference[];
3
3
  export declare function deduplicateColorsByValue(colors: ColorReference[]): ColorReference[];
4
4
  export declare function deduplicateColorsByStandardizedValue(colors: ColorReference[], standardizeColor: (color: string) => string): ColorReference[];
@@ -1,5 +1,5 @@
1
- import type { ColorReference } from '../../../types/color.d';
1
+ import type { ColorReference } from '../../../types/design-system.d';
2
2
  export declare function extractColors(text: string, filePath?: string, options?: {
3
3
  validOnly?: boolean;
4
4
  }): ColorReference[];
5
- export declare function extractColorsFromLine(line: string, lineNumber: number, filePath: string): ColorReference[];
5
+ export declare function extractColorsFromLine(line: string, lineNumber: number, filePath: string, validOnly?: boolean): ColorReference[];
@@ -1,4 +1,5 @@
1
1
  import { COLOR_PATTERNS } from '../../constants/colorPatterns';
2
+ import { detectColorFormat } from './detectColorFormat';
2
3
  export function extractColors(text, filePath = '', options = {}) {
3
4
  const { validOnly = true } = options;
4
5
  if (!text || typeof text !== 'string') {
@@ -7,12 +8,12 @@ export function extractColors(text, filePath = '', options = {}) {
7
8
  const colors = [];
8
9
  const lines = text.split('\n');
9
10
  lines.forEach((line, lineIndex) => {
10
- const lineColors = extractColorsFromLine(line, lineIndex + 1, filePath);
11
+ const lineColors = extractColorsFromLine(line, lineIndex + 1, filePath, validOnly);
11
12
  colors.push(...lineColors);
12
13
  });
13
14
  return colors;
14
15
  }
15
- export function extractColorsFromLine(line, lineNumber, filePath) {
16
+ export function extractColorsFromLine(line, lineNumber, filePath, validOnly = true) {
16
17
  const colors = [];
17
18
  const allMatches = [];
18
19
  Object.entries(COLOR_PATTERNS).forEach(([format, pattern]) => {
@@ -25,7 +26,15 @@ export function extractColorsFromLine(line, lineNumber, filePath) {
25
26
  allMatches.forEach(match => {
26
27
  const existingMatches = allMatches.filter(m => colors.some(c => c.originalValue === m.value));
27
28
  if (!isOverlapping(match, existingMatches)) {
28
- colors.push(createColorReference(match.value, match.format, lineNumber - 1, filePath, line.trim()));
29
+ if (validOnly) {
30
+ const validation = detectColorFormat(match.value);
31
+ if (validation.isValid) {
32
+ colors.push(createColorReference(match.value, match.format, lineNumber, filePath, line.trim()));
33
+ }
34
+ }
35
+ else {
36
+ colors.push(createColorReference(match.value, match.format, lineNumber, filePath, line.trim()));
37
+ }
29
38
  }
30
39
  });
31
40
  return colors;
@@ -50,11 +59,11 @@ function isOverlapping(match, otherMatches) {
50
59
  (match.start <= other.start && match.end >= other.end));
51
60
  });
52
61
  }
53
- function createColorReference(colorValue, format, lineIndex, filePath, context) {
62
+ function createColorReference(colorValue, format, lineNumber, filePath, context) {
54
63
  return {
55
64
  originalValue: colorValue,
56
65
  format,
57
- line: lineIndex + 1,
66
+ line: lineNumber,
58
67
  file: filePath,
59
68
  context
60
69
  };
@@ -1 +1 @@
1
- {"version":3,"file":"extractColors.js","sourceRoot":"","sources":["../../../src/functions/color/extractColors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extractColors.js","sourceRoot":"","sources":["../../../src/functions/color/extractColors.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,5 @@
1
- import type { ColorReference } from '../../../types/color.d';
2
- export interface CssVariableExtractionOptions {
3
- validOnly?: boolean;
4
- cssVariables?: Record<string, string>;
5
- }
6
- export declare function extractCssVariables(text: string, filePath: string, options?: CssVariableExtractionOptions): ColorReference[];
1
+ import type { DesignToken } from '../../../types/design-system.d';
2
+ export declare function extractCssVariables(text: string, filePath: string): DesignToken[];
7
3
  export declare function extractCssVariableDefinitions(text: string): Array<{
8
4
  variableName: string;
9
5
  value: string;
@@ -1,27 +1,21 @@
1
- export function extractCssVariables(text, filePath, options = {}) {
2
- const { validOnly = true, cssVariables = {} } = options;
1
+ export function extractCssVariables(text, filePath) {
3
2
  if (!text || typeof text !== 'string') {
4
3
  return [];
5
4
  }
6
5
  const variables = [];
7
6
  const lines = text.split('\n');
8
- const cssVarPattern = /var\(\s*(--[\w-]+)(?:\s*,\s*([^)]+))?\s*\)/g;
7
+ const cssVarPattern = /var\(\s*(--[\w-]+)(?:\s*,\s*([^)]*))?\s*\)/g;
9
8
  lines.forEach((line, lineIndex) => {
10
9
  let match;
11
10
  while ((match = cssVarPattern.exec(line)) !== null) {
12
- const [fullMatch, variableName, fallback] = match;
13
- const variableValue = cssVariables[variableName];
14
- if (validOnly && !variableValue && !fallback) {
15
- continue;
16
- }
11
+ const [fullMatch, variableName, fallbackValue] = match;
17
12
  variables.push({
18
- originalValue: fullMatch,
19
- format: 'css-variable',
13
+ name: variableName,
14
+ value: fullMatch,
15
+ type: 'color',
20
16
  line: lineIndex + 1,
21
17
  file: filePath,
22
- context: line.trim(),
23
- isVariableReference: true,
24
- variableName
18
+ context: line.trim()
25
19
  });
26
20
  }
27
21
  cssVarPattern.lastIndex = 0;
@@ -34,7 +28,7 @@ export function extractCssVariableDefinitions(text) {
34
28
  }
35
29
  const definitions = [];
36
30
  const lines = text.split('\n');
37
- const cssVarDefPattern = /--(\w[\w-]*?)\s*:\s*([^;]+);/g;
31
+ const cssVarDefPattern = /^\s*--((?:[a-zA-Z_\u0080-\uFFFF])(?:[a-zA-Z0-9_\u0080-\uFFFF-])*)\s*:\s*([^;]+);/gm;
38
32
  lines.forEach((line, lineIndex) => {
39
33
  let match;
40
34
  while ((match = cssVarDefPattern.exec(line)) !== null) {
@@ -1 +1 @@
1
- {"version":3,"file":"extractCssVariables.js","sourceRoot":"","sources":["../../../src/functions/css/extractCssVariables.ts"],"names":[],"mappings":"AA2BA,MAAM,UAAU,mBAAmB,CACjC,IAAY,EACZ,QAAgB,EAChB,UAAwC,EAAE;IAE1C,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,YAAY,GAAG,EAAE,EAAE,GAAG,OAAO,CAAA;IAEvD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,SAAS,GAAqB,EAAE,CAAA;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAG9B,MAAM,aAAa,GAAG,6CAA6C,CAAA;IAEnE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;QAChC,IAAI,KAAK,CAAA;QACT,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACnD,MAAM,CAAC,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAA;YACjD,MAAM,aAAa,GAAG,YAAY,CAAC,YAAY,CAAC,CAAA;YAGhD,IAAI,SAAS,IAAI,CAAC,aAAa,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC7C,SAAQ;YACV,CAAC;YAED,SAAS,CAAC,IAAI,CAAC;gBACb,aAAa,EAAE,SAAS;gBACxB,MAAM,EAAE,cAA6B;gBACrC,IAAI,EAAE,SAAS,GAAG,CAAC;gBACnB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;gBACpB,mBAAmB,EAAE,IAAI;gBACzB,YAAY;aACb,CAAC,CAAA;QACJ,CAAC;QAGD,aAAa,CAAC,SAAS,GAAG,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEF,OAAO,SAAS,CAAA;AAClB,CAAC;AASD,MAAM,UAAU,6BAA6B,CAC3C,IAAY;IAOZ,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,WAAW,GAKZ,EAAE,CAAA;IAEP,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAG9B,MAAM,gBAAgB,GAAG,+BAA+B,CAAA;IAExD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;QAChC,IAAI,KAAK,CAAA;QACT,OAAO,CAAC,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACtD,MAAM,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,GAAG,KAAK,CAAA;YAErC,WAAW,CAAC,IAAI,CAAC;gBACf,YAAY,EAAE,KAAK,YAAY,EAAE;gBACjC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;gBACnB,IAAI,EAAE,SAAS,GAAG,CAAC;gBACnB,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;aACrB,CAAC,CAAA;QACJ,CAAC;QAGD,gBAAgB,CAAC,SAAS,GAAG,CAAC,CAAA;IAChC,CAAC,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"extractCssVariables.js","sourceRoot":"","sources":["../../../src/functions/css/extractCssVariables.ts"],"names":[],"mappings":"AAgBA,MAAM,UAAU,mBAAmB,CACjC,IAAY,EACZ,QAAgB;IAEhB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,SAAS,GAAkB,EAAE,CAAA;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAI9B,MAAM,aAAa,GAAG,6CAA6C,CAAA;IAEnE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;QAChC,IAAI,KAAK,CAAA;QACT,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACnD,MAAM,CAAC,SAAS,EAAE,YAAY,EAAE,aAAa,CAAC,GAAG,KAAK,CAAA;YAEtD,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS,GAAG,CAAC;gBACnB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;aACrB,CAAC,CAAA;QACJ,CAAC;QAGD,aAAa,CAAC,SAAS,GAAG,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEF,OAAO,SAAS,CAAA;AAClB,CAAC;AASD,MAAM,UAAU,6BAA6B,CAC3C,IAAY;IAOZ,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,WAAW,GAKZ,EAAE,CAAA;IAEP,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAM9B,MAAM,gBAAgB,GAAG,oFAAoF,CAAA;IAE7G,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;QAChC,IAAI,KAAK,CAAA;QACT,OAAO,CAAC,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACtD,MAAM,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,GAAG,KAAK,CAAA;YAErC,WAAW,CAAC,IAAI,CAAC;gBACf,YAAY,EAAE,KAAK,YAAY,EAAE;gBACjC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;gBACnB,IAAI,EAAE,SAAS,GAAG,CAAC;gBACnB,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;aACrB,CAAC,CAAA;QACJ,CAAC;QAGD,gBAAgB,CAAC,SAAS,GAAG,CAAC,CAAA;IAChC,CAAC,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { ColorReference } from '../../../types/color.d';
1
+ import type { ColorReference } from '../../../types/design-system.d';
2
2
  import type { VueProcessingOptions } from '../../../types/vue.d';
3
3
  export declare function extractColorsFromVueFile(code: string, filePath: string, options?: VueProcessingOptions): ColorReference[];
@@ -1,3 +1,3 @@
1
- import type { ColorReference } from '../../../types/color.d';
1
+ import type { ColorReference } from '../../../types/design-system.d';
2
2
  import type { VueSection, VueProcessingOptions } from '../../../types/vue.d';
3
3
  export declare function extractColorsFromVueSection(section: VueSection, filePath: string, options?: VueProcessingOptions): ColorReference[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zcw-shared",
3
- "version": "1.10.5",
3
+ "version": "1.11.1",
4
4
  "files": [
5
5
  "references",
6
6
  "dist",
@@ -113,6 +113,7 @@
113
113
  "./types/altool": "./types/altool.d.ts",
114
114
  "./types/android-build": "./types/android-build.d.ts",
115
115
  "./types/color": "./types/color.d.ts",
116
+ "./types/design-system": "./types/design-system.d.ts",
116
117
  "./types/geometry": "./types/geometry.d.ts",
117
118
  "./types/platform": "./types/platform.d.ts",
118
119
  "./types/software": "./types/software.d.ts",
package/types/color.d.ts CHANGED
@@ -37,37 +37,4 @@ export interface HslColor {
37
37
  */
38
38
  export interface HslaColor extends HslColor {
39
39
  a: number
40
- }
41
-
42
- /**
43
- * 颜色引用信息
44
- * 用于记录在代码中发现的颜色值及其位置信息
45
- */
46
- export interface ColorReference {
47
- /** 原始颜色值 */
48
- originalValue: string
49
- /** 颜色格式 */
50
- format: ColorFormat | 'css-variable' | 'third-party-variable'
51
- /** 文件路径 */
52
- file: string
53
- /** 行号 */
54
- line: number
55
- /** 上下文代码 */
56
- context: string
57
- /** 是否为变量引用 */
58
- isVariableReference?: boolean
59
- /** 变量名称(如果是变量引用) */
60
- variableName?: string
61
- }
62
-
63
- /**
64
- * 颜色提取选项
65
- */
66
- export interface ColorExtractionOptions {
67
- /** 是否只提取有效的颜色值 */
68
- validOnly?: boolean
69
- /** CSS变量映射 */
70
- cssVariables?: Record<string, string>
71
- /** 第三方变量映射 */
72
- thirdPartyVariables?: Record<string, string>
73
40
  }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * 设计系统相关类型定义
3
+ */
4
+
5
+ /**
6
+ * 设计令牌接口
7
+ * 用于表示设计系统中的各种令牌(颜色、间距、字体等)
8
+ */
9
+ export interface DesignToken {
10
+ /** 令牌名称 */
11
+ name: string
12
+ /** 令牌值 */
13
+ value: string
14
+ /** 令牌类型 */
15
+ type: 'color' | 'spacing' | 'typography' | 'border' | 'shadow' | 'animation'
16
+ /** 文件路径 */
17
+ file: string
18
+ /** 行号 */
19
+ line: number
20
+ /** 上下文代码 */
21
+ context: string
22
+ }
23
+
24
+ /**
25
+ * 颜色引用信息
26
+ * 用于记录在代码中发现的颜色值及其位置信息
27
+ */
28
+ export interface ColorReference {
29
+ /** 原始颜色值 */
30
+ originalValue: string
31
+ /** 颜色格式 */
32
+ format: 'hex' | 'rgb' | 'rgba' | 'hsl' | 'hsla' | 'named'
33
+ /** 文件路径 */
34
+ file: string
35
+ /** 行号 */
36
+ line: number
37
+ /** 上下文代码 */
38
+ context: string
39
+ }
package/types/vue.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { ColorReference, ColorExtractionOptions } from './color.d'
1
+ import type { ColorReference } from './design-system.d'
2
2
 
3
3
  /**
4
4
  * Vue文件section类型
@@ -22,7 +22,9 @@ export interface VueSection {
22
22
  /**
23
23
  * Vue文件处理选项
24
24
  */
25
- export interface VueProcessingOptions extends ColorExtractionOptions {
25
+ export interface VueProcessingOptions {
26
+ /** 是否只提取有效的颜色值 */
27
+ validOnly?: boolean
26
28
  /** 是否只处理特定的section类型 */
27
29
  includeSections?: VueSectionType[]
28
30
  /** 是否排除特定的section类型 */