Procházet zdrojové kódy

fix(v7): M1 重建 R5a——修两个 CI 红(本地绿但 CI 必挂)

1. v7-ci.yml 缺 `npm ci`:stage A 引入 js-yaml 后未给 CI 加装依赖步骤,
   node_modules 是 gitignore 的 → CI 上所有用 YAML 解析的测试 import 失败。
   现于 setup-node 后加 `npm ci`(lockfile 已校验,js-yaml+argparse,0 漏洞)。
2. bin 丢了 --version 与 Node 版本门槛:M0 本有,M1 D.0 重写弄丢,
   导致 CI 冒烟步骤 `node bin/webnovel-writer.js --version` 恒 exit 1。
   现恢复启动版本门槛 checkNodeVersion + --version/-v 输出 package 版本。
lingfengQAQ před 18 hodinami
rodič
revize
05b09052d2
2 změnil soubory, kde provedl 17 přidání a 0 odebrání
  1. 2 0
      .github/workflows/v7-ci.yml
  2. 15 0
      v7/bin/webnovel-writer.js

+ 2 - 0
.github/workflows/v7-ci.yml

@@ -22,6 +22,8 @@ jobs:
       - uses: actions/setup-node@v4
         with:
           node-version: ${{ matrix.node }}
+      - name: 安装依赖(js-yaml 等,零依赖铁律下的唯一例外)
+        run: npm ci
       - name: 单元测试(含中文路径用例)
         run: node --test
       - name: 版本门槛冒烟

+ 15 - 0
v7/bin/webnovel-writer.js

@@ -2,13 +2,28 @@
 
 import path from 'node:path'
 import { fileURLToPath } from 'node:url'
+import { readFileSync } from 'node:fs'
 import { CacheManager } from '../src/cache/index.js'
+import { checkNodeVersion } from '../src/runtime/node-version.js'
 
 const __dirname = path.dirname(fileURLToPath(import.meta.url))
 
+// 版本门槛先行(M0 起的不变量;纯比较在 node-version.js,副作用留这里)
+const gate = checkNodeVersion(process.version)
+if (!gate.ok) {
+  console.error(gate.message)
+  process.exit(1)
+}
+
 const argv = process.argv.slice(2)
 const command = argv[0]
 
+if (command === '--version' || command === '-v') {
+  const pkg = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8'))
+  console.log(pkg.version)
+  process.exit(0)
+}
+
 if (!command || command === '--help') {
   console.log('用法:webnovel-writer <命令> [选项]')
   console.log('')