File tree Expand file tree Collapse file tree
.cursor/skills/nutui-build-local-verify Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11---
22name : nutui-build-local-verify
3- description : NutUI 比例缩放本地验证——默认就地覆盖:每个组件 SCSS 写回 src/packages 下同一路径(如 actionsheet/actionsheet .scss→同文件 );--mirror 才写到 scale-verify/ 对照。 不写 build。
3+ description : NutUI 比例缩放本地验证——写回 src/packages 下同路径组件 SCSS(跳过 src/packages/**/demo .scss 与 demos );--mirror 写 scale-verify/; 不写 build。
44disable-model-invocation : true
55---
66
@@ -10,6 +10,8 @@ disable-model-invocation: true
1010
1111** 只做一步** :用 ` scripts/px-to-scale-px-in-component-scss.cjs ` 把组件 SCSS 里裸 ` px ` 转成 ` scale-px ` 等,并把结果写回磁盘。
1212
13+ ** 不扫描、不写入** :** ` src/packages/<组件名>/demo.scss ` ** (各组件目录根下的单文件)、` **/demos/** ` 、路径中含 ** ` /demo/ ` ** 、测试与快照目录下的 ` .scss ` (与官方 ` build.mjs ` 里对 ` **/demo.scss ` 的 ignore 一致)。
14+
1315- ** 默认(就地覆盖)** :对每个匹配的 ` .scss ` ,** 读、写都是同一路径** ——相对 ` src/packages ` 的路径不变。例如 ` src/packages/actionsheet/actionsheet.scss ` 转换后仍写回该文件,不会改到别的目录或改名。
1416- ** ` --mirror ` ** :不写源码;结果写到 ** ` scale-verify/<与 src/packages 相同的相对路径> ` ** (例如 ` scale-verify/actionsheet/actionsheet.scss ` ),便于 diff。
1517
@@ -19,6 +21,14 @@ disable-model-invocation: true
1921
2022在 ** nutui-react 仓库根目录** 执行。** 务必先 commit / stash** ,用完 ` git restore src/packages ` 或 ` git checkout -- src/packages ` 恢复。
2123
24+ 若只需还原 ** ` src/packages/<组件>/demo.scss ` ** (当前脚本已跳过;若曾被旧版本误改):
25+
26+ ``` bash
27+ find src/packages -name ' demo.scss' -exec git restore -- {} \;
28+ ```
29+
30+ ** 然后** 在仓库根执行验证:
31+
2232``` bash
2333pnpm run verify-scale
2434```
Original file line number Diff line number Diff line change 11#!/usr/bin/env node
22/**
3- * 默认:每个文件读自且写回 src/packages 下同一路径(如 …/actionsheet/actionsheet.scss)。
4- * 不包含 build;自行 git diff / 恢复即可。
3+ * 本地验证:默认就地写回 src/packages 下同一路径的组件 .scss(如 …/actionsheet/actionsheet.scss)。
4+ * 跳过 src/packages/**/ demo . scss、demos、测试与快照(与 build . mjs ignore 一致)。
5+ * -- mirror 只写 scale - verify / ;不包含 build;自行 git diff / 恢复即可。
56 * /
67import fs from 'node:fs/promises'
78import path from 'path'
@@ -32,6 +33,9 @@ function isScssFile(name) {
3233
3334function shouldSkip ( relPath ) {
3435 const p = relPath . replaceAll ( '\\' , '/' )
36+ // 与 build.mjs 的 ignore 一致:**/demo.scss 不参与 px→scale 写回
37+ if ( path . posix . basename ( p ) === 'demo.scss' ) return true
38+ if ( p . includes ( '/demo/' ) ) return true
3539 if ( p . includes ( '/demos/' ) ) return true
3640 if ( p . includes ( '/__test__/' ) ) return true
3741 if ( p . includes ( '/__tests__/' ) ) return true
You can’t perform that action at this time.
0 commit comments