my-code-style 1.9.5 → 1.9.6
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 +7 -0
- package/bin/doctor +15 -3
- package/package.json +1 -1
- package/src/stylelint/less-override.cjs +15 -1
- package/src/stylelint/less.cjs +15 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
## 变更日志
|
|
2
2
|
|
|
3
|
+
## [1.9.6](https://github.com/myvn/codeStyle/compare/v1.9.5...v1.9.6) (2026-10-20)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### 🐛 Bug Fixes | Bug 修复
|
|
7
|
+
|
|
8
|
+
* 1.9.5 落地优化——Stylelint 15 兼容、doctor 分级、dist-tag 同步 ([584d7cc](https://github.com/myvn/codeStyle/commit/584d7cc257700f59a75a918793c807fbd34b23b3))
|
|
9
|
+
|
|
3
10
|
## [1.9.5](https://github.com/myvn/codeStyle/compare/v1.9.4...v1.9.5) (2026-10-20)
|
|
4
11
|
|
|
5
12
|
|
package/bin/doctor
CHANGED
|
@@ -14,12 +14,17 @@ const styleVariant = require("../src/stylelint/variant.cjs")
|
|
|
14
14
|
|
|
15
15
|
const PROJECT_ROOT = process.cwd()
|
|
16
16
|
let problems = 0
|
|
17
|
+
let warnings = 0
|
|
17
18
|
|
|
18
19
|
const ok = (msg) => console.log(` ✓ ${msg}`)
|
|
19
20
|
const bad = (msg) => {
|
|
20
21
|
problems++
|
|
21
22
|
console.log(` ✗ ${msg}`)
|
|
22
23
|
}
|
|
24
|
+
const warn = (msg) => {
|
|
25
|
+
warnings++
|
|
26
|
+
console.log(` ! ${msg}`)
|
|
27
|
+
}
|
|
23
28
|
const info = (msg) => console.log(` · ${msg}`)
|
|
24
29
|
|
|
25
30
|
const args = process.argv.slice(2)
|
|
@@ -32,7 +37,7 @@ if (unknown.length) {
|
|
|
32
37
|
if (args.includes("--help") || args.includes("-h")) {
|
|
33
38
|
console.log("Usage: my-code-style-doctor [--version|-v] [--help|-h]")
|
|
34
39
|
console.log("在项目根目录运行:体检 peer 依赖、husky hooks、lockfile 入库与配置文件。")
|
|
35
|
-
console.log("退出码:0 =
|
|
40
|
+
console.log("退出码:0 = 无阻断问题(建议项 ! 不计入退出码,可用于 CI 门禁);1 = 存在阻断问题。")
|
|
36
41
|
process.exit(0)
|
|
37
42
|
}
|
|
38
43
|
if (args.includes("--version") || args.includes("-v")) {
|
|
@@ -255,8 +260,11 @@ if (manifest.name === "my-code-style") {
|
|
|
255
260
|
} else if (missing.length === 0 && mismatched.length === 0) {
|
|
256
261
|
ok(`peer 依赖 ${scopedPeers.length} 个全部安装且版本达标`)
|
|
257
262
|
} else {
|
|
263
|
+
// 缺失视为阻断(对应 peer 的项目类型下 lint 会直接失败);版本不满足多为旧链
|
|
264
|
+
// 仍可工作(如 ESLint 8 / Stylelint 15),记为建议而非阻断(1.9.5 落地反馈:统一
|
|
265
|
+
// 报红易被误判为环境已坏)。peer 均为 optional,是否升级由团队决定。
|
|
258
266
|
for (const [name, range] of missing) bad(`peer ${name} 未安装(要求 ${range})`)
|
|
259
|
-
for (const [name, version, range] of mismatched)
|
|
267
|
+
for (const [name, version, range] of mismatched) warn(`peer ${name}@${version} 不满足 ${range}(可选择性升级)`)
|
|
260
268
|
const spec = [...missing, ...mismatched.map(([n, , r]) => [n, r])]
|
|
261
269
|
.map(([name, range]) => (range.includes("||") ? `"${name}@${range}"` : `${name}@${range}`))
|
|
262
270
|
.join(" ")
|
|
@@ -350,5 +358,9 @@ for (const [file, label] of configs) {
|
|
|
350
358
|
}
|
|
351
359
|
if (configCount > 0) ok(`配置文件 ${configCount} 个就位`)
|
|
352
360
|
|
|
353
|
-
|
|
361
|
+
if (warnings > 0 && problems === 0) {
|
|
362
|
+
console.log(`\n体检完成:全部健康 ✓(${warnings} 个建议项可选择性处理)`)
|
|
363
|
+
} else {
|
|
364
|
+
console.log(`\n体检完成:${problems === 0 ? "全部健康 ✓" : `${problems} 个问题需要处理`}${warnings ? `(另有 ${warnings} 个建议)` : ""}`)
|
|
365
|
+
}
|
|
354
366
|
process.exit(problems === 0 ? 0 : 1)
|
package/package.json
CHANGED
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
// Stylelint 16+ 才引入 at-rule-prelude-no-invalid;存量项目若仍用
|
|
2
|
+
// Stylelint 15,静态写入该规则会报 Unknown rule 阻断提交(1.9.5 落地反馈)。
|
|
3
|
+
// 动态探测宿主是否已注册该规则,未注册时不注入,保持两版本开箱即用。
|
|
4
|
+
const supportsAtRulePrelude = (() => {
|
|
5
|
+
try {
|
|
6
|
+
const sl = require("stylelint")
|
|
7
|
+
return Boolean(sl.rules && "at-rule-prelude-no-invalid" in sl.rules)
|
|
8
|
+
} catch {
|
|
9
|
+
// 未安装 stylelint 时交由运行时校验;为与 1.9.5 语义一致默认视为支持
|
|
10
|
+
return true
|
|
11
|
+
}
|
|
12
|
+
})()
|
|
13
|
+
|
|
1
14
|
// Less-specific Stylelint override configuration
|
|
2
15
|
// Usage: merge into your Stylelint config when your project uses Less
|
|
3
16
|
|
|
@@ -18,7 +31,8 @@ module.exports = {
|
|
|
18
31
|
// 开启的这两条规则判死且无法 --fix(与 less.cjs 同源:BUG-040 / BUG-041)。
|
|
19
32
|
// 走 less-override 合并的项目同样需要这层放行。
|
|
20
33
|
"media-query-no-invalid": null,
|
|
21
|
-
|
|
34
|
+
// Stylelint 15 尚无该规则,静态写入会报 Unknown rule 阻断提交,故动态注入。
|
|
35
|
+
...(supportsAtRulePrelude ? { "at-rule-prelude-no-invalid": null } : {}),
|
|
22
36
|
// Allow ::v-deep / /deep/ / ::ng-deep pseudo-elements
|
|
23
37
|
"selector-pseudo-element-no-unknown": [
|
|
24
38
|
true,
|
package/src/stylelint/less.cjs
CHANGED
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
// Stylelint 16+ 才引入 at-rule-prelude-no-invalid;存量项目若仍用
|
|
2
|
+
// Stylelint 15,静态写入该规则会报 Unknown rule 阻断提交(1.9.5 落地反馈)。
|
|
3
|
+
// 动态探测宿主是否已注册该规则,未注册时不注入,保持两版本开箱即用。
|
|
4
|
+
const supportsAtRulePrelude = (() => {
|
|
5
|
+
try {
|
|
6
|
+
const sl = require("stylelint")
|
|
7
|
+
return Boolean(sl.rules && "at-rule-prelude-no-invalid" in sl.rules)
|
|
8
|
+
} catch {
|
|
9
|
+
// 未安装 stylelint 时交由运行时校验;为与 1.9.5 语义一致默认视为支持
|
|
10
|
+
return true
|
|
11
|
+
}
|
|
12
|
+
})()
|
|
13
|
+
|
|
1
14
|
// Stylelint config for Vue/Less projects
|
|
2
15
|
module.exports = {
|
|
3
16
|
root: true,
|
|
@@ -64,7 +77,8 @@ module.exports = {
|
|
|
64
77
|
// Less 的 `@import (reference) "m.less"` / `@import (less) "t.css"` 选项在
|
|
65
78
|
// CSS 语法里同样非法,at-rule-prelude-no-invalid 会把整个 prelude 判死
|
|
66
79
|
// (BUG-041 实测:下游 3 处命中,无 fixer)。同样对齐 SCSS 线上游的 null。
|
|
67
|
-
|
|
80
|
+
// Stylelint 15 尚无该规则,静态写入会报 Unknown rule 阻断提交,故动态注入。
|
|
81
|
+
...(supportsAtRulePrelude ? { "at-rule-prelude-no-invalid": null } : {}),
|
|
68
82
|
// 允许小程序 page 标签
|
|
69
83
|
"selector-type-no-unknown": [true, { ignoreTypes: ["page"] }],
|
|
70
84
|
"comment-empty-line-before": "never",
|