zengen 0.1.1 → 0.1.2

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.
@@ -0,0 +1,120 @@
1
+ # GitHub CI/CD 配置指南
2
+
3
+ 本文档描述了如何为 zengen 项目配置 GitHub Actions 进行可信发布。
4
+
5
+ ## 概述
6
+
7
+ 我们配置了三个 GitHub Actions workflows:
8
+
9
+ 1. **CI** (`ci.yml`) - 代码质量检查和测试
10
+ 2. **Version Management** (`version.yml`) - 版本管理和自动创建 Release
11
+ 3. **Publish to npm** (`publish.yml`) - 可信发布到 npm registry
12
+
13
+ ## 配置步骤
14
+
15
+ ### 1. 设置 npm 认证令牌
16
+
17
+ 由于 npm 经典令牌已被撤销,需要使用新的认证方式:
18
+
19
+ #### 选项 A: 使用细粒度访问令牌(推荐)
20
+ 1. 登录 [npmjs.com](https://www.npmjs.com)
21
+ 2. 进入 Account Settings → Access Tokens
22
+ 3. 点击 "Create New Token"
23
+ 4. 选择 "Automation" 类型
24
+ 5. 配置权限:
25
+ - 读取和写入包
26
+ - 绕过 2FA(用于自动化工作流)
27
+ 6. 设置有效期(最长 90 天)
28
+ 7. 复制生成的令牌
29
+
30
+ #### 选项 B: 使用 OIDC 可信发布
31
+ 1. 确保在 GitHub 仓库设置中启用了 OIDC
32
+ 2. 配置 npm 以信任 GitHub Actions 的 OIDC 令牌
33
+
34
+ ### 2. 配置 GitHub Actions 权限
35
+
36
+ 确保仓库有以下权限设置:
37
+ - Settings → Actions → General
38
+ - Workflow permissions: 选择 "Read and write permissions"
39
+ - 确保启用了 OIDC 支持
40
+
41
+ **注意**:对于 npm OIDC 发布,不需要配置 `NPM_TOKEN` secret。GitHub Actions 会自动使用 OIDC 令牌进行认证。
42
+
43
+
44
+ ## 工作流程
45
+
46
+ ### CI 流程
47
+ 1. 当有 push 到 main 分支或创建 PR 时触发
48
+ 2. 在多个 Node.js 版本上运行测试
49
+ 3. 执行代码质量检查
50
+ 4. 构建包并验证
51
+
52
+ ### 版本管理流程
53
+ 1. 当 package.json 版本变更时触发
54
+ 2. 自动创建 GitHub Release
55
+ 3. 生成基于提交历史的 changelog
56
+
57
+ ### 发布流程
58
+ 1. 当创建 GitHub Release 时触发
59
+ 2. 使用 OIDC 进行可信认证
60
+ 3. 构建并发布到 npm
61
+ 4. 生成来源证明(provenance)
62
+
63
+ ## 手动发布
64
+
65
+ 如果需要手动发布:
66
+
67
+ 1. 更新 `package.json` 中的版本号
68
+ 2. 提交并推送到 main 分支
69
+ 3. 版本管理 workflow 会自动创建 Release
70
+ 4. 发布 workflow 会自动发布到 npm
71
+
72
+ 或者使用 workflow_dispatch:
73
+ 1. 前往 Actions → Publish to npm
74
+ 2. 点击 "Run workflow"
75
+ 3. 选择分支并运行
76
+
77
+ ## 安全注意事项
78
+
79
+ 1. **令牌安全**:
80
+ - 永远不要在代码中硬编码令牌
81
+ - 使用 GitHub Secrets 存储敏感信息
82
+ - 定期轮换令牌
83
+
84
+ 2. **OIDC 优势**:
85
+ - 消除长期令牌的管理
86
+ - 自动化的短期会话令牌
87
+ - 更好的安全审计
88
+
89
+ 3. **来源证明**:
90
+ - 使用 `--provenance` 标志发布
91
+ - 验证包的构建环境和来源
92
+ - 增加用户信任
93
+
94
+ ## 故障排除
95
+
96
+ ### 常见问题
97
+
98
+ 1. **认证失败**:
99
+ - 确保仓库启用了 OIDC 支持
100
+ - 检查 workflow 中设置了 `permissions: id-token: write`
101
+ - 验证 npm 版本是否支持 OIDC(需要 npm 9.0.0+)
102
+
103
+ 2. **版本检测失败**:
104
+ - 确保 `fetch-depth: 0` 以获取完整历史
105
+ - 检查 package.json 格式是否正确
106
+
107
+ 3. **构建失败**:
108
+ - 检查 Node.js 版本兼容性
109
+ - 验证 TypeScript 配置
110
+ - 确保所有依赖项已安装
111
+
112
+ ### 调试
113
+ - 查看 GitHub Actions 日志
114
+ - 启用调试日志:在仓库 Settings → Actions → Runner 中设置 secret `ACTIONS_STEP_DEBUG` 为 `true`
115
+
116
+ ## 相关链接
117
+
118
+ - [npm 认证变更公告](https://github.blog/changelog/2025-12-09-npm-classic-tokens-revoked-session-based-auth-and-cli-token-management-now-available/)
119
+ - [GitHub Actions npm 发布文档](https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages)
120
+ - [npm 可信发布文档](https://docs.npmjs.com/trusted-publishing-with-oidc)
@@ -0,0 +1,69 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ node-version: [18.x, 20.x, 22.x]
15
+
16
+ steps:
17
+ - name: Checkout repository
18
+ uses: actions/checkout@v4
19
+
20
+ - name: Setup Node.js ${{ matrix.node-version }}
21
+ uses: actions/setup-node@v4
22
+ with:
23
+ node-version: ${{ matrix.node-version }}
24
+ cache: 'npm'
25
+
26
+ - name: Install dependencies
27
+ run: npm ci
28
+
29
+ - name: Run linting (if configured)
30
+ run: |
31
+ if [ -f .eslintrc.js ] || [ -f .eslintrc.json ] || [ -f .eslintrc ]; then
32
+ npx eslint src/ --ext .ts,.tsx
33
+ else
34
+ echo "No ESLint config found, skipping linting"
35
+ fi
36
+
37
+ - name: Type check
38
+ run: npx tsc --noEmit
39
+
40
+ - name: Run tests
41
+ run: npm test
42
+
43
+ - name: Build package
44
+ run: npm run build
45
+
46
+ - name: Verify CLI works
47
+ run: |
48
+ node dist/cli.js --help
49
+ echo "CLI verification successful"
50
+
51
+ security:
52
+ runs-on: ubuntu-latest
53
+ steps:
54
+ - name: Checkout repository
55
+ uses: actions/checkout@v4
56
+
57
+ - name: Setup Node.js
58
+ uses: actions/setup-node@v4
59
+ with:
60
+ node-version: '20.x'
61
+
62
+ - name: Install dependencies
63
+ run: npm ci
64
+
65
+ - name: Run npm audit
66
+ run: npm audit --audit-level=moderate
67
+
68
+ - name: Check for outdated dependencies
69
+ run: npm outdated || true
@@ -0,0 +1,56 @@
1
+ name: Publish to npm
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ workflow_dispatch: # 允许手动触发
7
+
8
+ permissions:
9
+ contents: read
10
+ id-token: write # 必需:用于 OIDC 认证
11
+
12
+ jobs:
13
+ publish-npm:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - name: Checkout repository
17
+ uses: actions/checkout@v4
18
+ with:
19
+ fetch-depth: 0
20
+
21
+ - name: Setup Node.js for npm publish
22
+ uses: actions/setup-node@v4
23
+ with:
24
+ node-version: '20.x'
25
+ registry-url: 'https://registry.npmjs.org'
26
+ cache: 'npm'
27
+
28
+ - name: Update npm to latest version
29
+ run: npm install -g npm@latest
30
+
31
+ - name: Install dependencies
32
+ run: npm ci
33
+
34
+ - name: Run tests
35
+ run: npm test
36
+
37
+ - name: Build package
38
+ run: npm run build
39
+
40
+ - name: Verify build
41
+ run: |
42
+ ls -la dist/
43
+ test -f dist/index.js && test -f dist/cli.js
44
+ echo "Build verification successful"
45
+
46
+ - name: Check npm version
47
+ run: npm --version
48
+
49
+ - name: Publish to npm
50
+ run: |
51
+ # 首先尝试不使用 provenance,确保基本发布能工作
52
+ echo "Attempting to publish to npm..."
53
+ npm publish --access public
54
+ env:
55
+ # 对于 GitHub Actions 的 npm 发布,使用 NODE_AUTH_TOKEN
56
+ NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,88 @@
1
+ name: Version Management
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ paths:
7
+ - 'package.json'
8
+ - 'src/**'
9
+
10
+ jobs:
11
+ check-version:
12
+ runs-on: ubuntu-latest
13
+ outputs:
14
+ version_changed: ${{ steps.check.outputs.version_changed }}
15
+ new_version: ${{ steps.check.outputs.new_version }}
16
+ steps:
17
+ - name: Checkout repository
18
+ uses: actions/checkout@v4
19
+ with:
20
+ fetch-depth: 0
21
+
22
+ - name: Check if version changed
23
+ id: check
24
+ run: |
25
+ # 获取当前版本
26
+ CURRENT_VERSION=$(jq -r '.version' package.json)
27
+ echo "Current version: $CURRENT_VERSION"
28
+
29
+ # 获取上一个提交的版本
30
+ git checkout HEAD~1 package.json 2>/dev/null || true
31
+ PREVIOUS_VERSION=$(jq -r '.version' package.json 2>/dev/null || echo "0.0.0")
32
+ git checkout HEAD package.json
33
+
34
+ echo "Previous version: $PREVIOUS_VERSION"
35
+
36
+ if [ "$CURRENT_VERSION" != "$PREVIOUS_VERSION" ]; then
37
+ echo "Version changed from $PREVIOUS_VERSION to $CURRENT_VERSION"
38
+ echo "version_changed=true" >> $GITHUB_OUTPUT
39
+ echo "new_version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
40
+ else
41
+ echo "Version unchanged"
42
+ echo "version_changed=false" >> $GITHUB_OUTPUT
43
+ echo "new_version=" >> $GITHUB_OUTPUT
44
+ fi
45
+
46
+ create-release:
47
+ needs: check-version
48
+ if: needs.check-version.outputs.version_changed == 'true'
49
+ runs-on: ubuntu-latest
50
+ steps:
51
+ - name: Checkout repository
52
+ uses: actions/checkout@v4
53
+ with:
54
+ fetch-depth: 0
55
+
56
+ - name: Setup Node.js
57
+ uses: actions/setup-node@v4
58
+ with:
59
+ node-version: '20.x'
60
+
61
+ - name: Get version and changelog
62
+ id: get_info
63
+ run: |
64
+ VERSION=$(jq -r '.version' package.json)
65
+ echo "version=$VERSION" >> $GITHUB_OUTPUT
66
+
67
+ # 尝试获取最近的提交信息作为发布说明
68
+ CHANGELOG=$(git log --oneline -n 10 --grep="^feat\|^fix\|^chore\|^docs\|^style\|^refactor\|^test\|^perf" || echo "No significant changes found")
69
+ echo "changelog<<EOF" >> $GITHUB_OUTPUT
70
+ echo "$CHANGELOG" >> $GITHUB_OUTPUT
71
+ echo "EOF" >> $GITHUB_OUTPUT
72
+
73
+ - name: Create GitHub Release
74
+ uses: softprops/action-gh-release@v1
75
+ with:
76
+ tag_name: v${{ steps.get_info.outputs.version }}
77
+ name: Release v${{ steps.get_info.outputs.version }}
78
+ body: |
79
+ ## Changes in v${{ steps.get_info.outputs.version }}
80
+
81
+ ${{ steps.get_info.outputs.changelog }}
82
+
83
+ ### Automated Release
84
+ This release was automatically created when the package version was updated.
85
+ draft: false
86
+ prerelease: false
87
+ env:
88
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
package/dist/cli.js CHANGED
@@ -38,11 +38,16 @@ const commander_1 = require("commander");
38
38
  const builder_1 = require("./builder");
39
39
  const path = __importStar(require("path"));
40
40
  const fs = __importStar(require("fs/promises"));
41
+ // 获取版本号 - 从 package.json 读取
42
+ // 注意:在构建时,版本号会被替换为当前 package.json 中的版本
43
+ function getVersion() {
44
+ return '0.1.2'; // 这个值会在构建时被替换
45
+ }
41
46
  const program = new commander_1.Command();
42
47
  program
43
48
  .name('zengen')
44
49
  .description('ZEN - A minimalist Markdown documentation site builder')
45
- .version('0.1.0');
50
+ .version(getVersion());
46
51
  // 构建命令
47
52
  program
48
53
  .command('build')
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zengen",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "ZEN - A minimalist Markdown documentation site builder",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -10,7 +10,10 @@
10
10
  "scripts": {
11
11
  "build": "tsc",
12
12
  "dev": "ts-node src/cli.ts",
13
- "test": "echo \"Error: no test specified\" && exit 1",
13
+ "test": "npm run test:types && npm run test:build && npm run test:cli",
14
+ "test:types": "tsc --noEmit",
15
+ "test:build": "npm run build && test -f dist/index.js && test -f dist/cli.js",
16
+ "test:cli": "node -e \"const pkg = require('./package.json'); console.log('Package:', pkg.name, 'v' + pkg.version)\"",
14
17
  "prepublishOnly": "npm run build"
15
18
  },
16
19
  "keywords": [
package/src/cli.ts CHANGED
@@ -5,13 +5,21 @@ import { ZenBuilder } from './builder';
5
5
  import { ZenConfig } from './types';
6
6
  import * as path from 'path';
7
7
  import * as fs from 'fs/promises';
8
+ import * as fsSync from 'fs';
9
+ import * as url from 'url';
10
+
11
+ // 获取版本号 - 从 package.json 读取
12
+ // 注意:在构建时,版本号会被替换为当前 package.json 中的版本
13
+ function getVersion(): string {
14
+ return '0.1.2'; // 这个值会在构建时被替换
15
+ }
8
16
 
9
17
  const program = new Command();
10
18
 
11
19
  program
12
20
  .name('zengen')
13
21
  .description('ZEN - A minimalist Markdown documentation site builder')
14
- .version('0.1.0');
22
+ .version(getVersion());
15
23
 
16
24
  // 构建命令
17
25
  program