# Wilboerht's Blog

A personal blog built with VitePress, featuring bilingual support and modern development practices.

[English](#english) | [中文](#中文)

## English

### Overview

This is a modern, performant blog built with VitePress, supporting both English and Chinese content. It features a clean design, optimized performance, and comprehensive development tooling.

### Features

- 📝 Bilingual Support (English & Chinese)
- 🎨 Clean, Modern Design
- 🚀 VitePress-powered Static Site Generation
- 📱 Responsive Layout
- 🔍 SEO Optimized
- 🛠️ Comprehensive Development Tools
- 🔒 Security Best Practices

### Detailed Features

#### Content Management

- **Bilingual Content Structure**
  - Separate English (`/en`) and Chinese (`/zh`) content directories
  - Automatic language detection and switching
  - URL-based language routing

- **Post Management**
  - Markdown-based writing with enhanced syntax
  - Front matter support for metadata
  - Categories and tags support
  - Draft system for unpublished posts

- **Asset Management**
  - Automatic image optimization
  - Support for multiple media types (images, videos, PDFs)
  - Asset validation and broken link detection
  - Public assets directory for static files

#### Development Features

- **Modern Development Tools**
  - TypeScript support for type safety
  - ESLint for code linting
  - Prettier for code formatting
  - Husky for Git hooks
  - lint-staged for staged files checking

- **Testing Framework**
  - Vitest for unit testing
  - Coverage reporting
  - Visual test UI interface
  - Jest DOM testing utilities

- **Security Features**
  - NPM audit checks
  - Dependency updates monitoring
  - Security vulnerability scanning
  - Automated security checks

- **Performance Optimization**
  - Built-in performance monitoring
  - Image optimization tools
  - Caching strategies
  - Bundle size optimization

#### Quality Assurance

- **Documentation Validation**
  - Automated link checking
  - Asset verification
  - Documentation structure validation
  - Spell checking with custom dictionary

- **Code Quality**
  - Automated code style enforcement
  - Type checking
  - Dead code detection
  - Best practices enforcement

- **Continuous Integration**
  - Automated testing
  - Build verification
  - Security scanning
  - Performance benchmarking

#### Backup and Version Control

- **Automated Backup**
  - Scheduled content backups
  - Multiple backup locations support
  - Backup verification
  - Restore procedures

- **Version Control**
  - Conventional commit messages
  - Automated changelog generation
  - Semantic versioning
  - Release management

#### Development Scripts

```bash
# Content Development
npm run docs:dev          # Start development server
npm run docs:build        # Build for production
npm run docs:preview      # Preview production build
npm run docs:clean        # Clean build files
npm run docs:validate     # Validate documentation
npm run docs:validate-links # Validate links

# Quality Assurance
npm run verify           # Verify assets
npm run performance     # Monitor performance
npm run lint            # Check code style
npm run lint:fix        # Fix code style issues
npm run format          # Format code

# Security
npm run security:audit   # Run security audit
npm run security:check   # Check security issues
npm run security:full    # Full security scan

# Testing
npm run test            # Run tests
npm run test:coverage   # Generate coverage report

# Maintenance
npm run optimize-images # Optimize images
npm run backup         # Create backup
npm run changelog      # Generate changelog
npm run release        # Create new release
```

#### Directory Structure

```
.
├── docs/                    # Documentation and content
│   ├── .vitepress/         # VitePress configuration
│   │   ├── config.ts       # Main configuration
│   │   ├── theme/          # Custom theme
│   │   └── security-headers.ts # Security headers
│   ├── en/                 # English content
│   ├── zh/                 # Chinese content
│   ├── posts/              # Blog posts
│   └── public/             # Static assets
├── scripts/                # Utility scripts
│   ├── backup.js          # Backup utility
│   ├── optimize-images.js  # Image optimization
│   ├── performance-monitor.js # Performance monitoring
│   ├── security-check.js   # Security scanning
│   ├── validate-docs.js    # Documentation validation
│   ├── validate-links.js   # Link validation
│   └── verify-assets.js    # Asset verification
└── .vitepress/            # VitePress configuration
```

### Tech Stack

- VitePress v1.0.0-rc.40
- Vue 3
- TypeScript
- ESLint & Prettier
- Husky & lint-staged
- GitHub Actions CI/CD

### Quick Start / 快速开始

#### Using NPM Package / 使用 NPM 包

You can create a new blog using our npm package:

```bash
# Using npm
npm create @wilboerht/blog-template my-blog

# Using yarn
yarn create @wilboerht/blog-template my-blog

# Using pnpm
pnpm create @wilboerht/blog-template my-blog
```

The CLI will guide you through the setup process. After creation:

```bash
cd my-blog
npm install    # Install dependencies
npm run docs:dev  # Start development server
```

#### Manual Installation / 手动安装

If you prefer to clone the repository directly:

### Getting Started

1. Clone the repository:

```bash
git clone https://github.com/yourusername/your-blog.git
cd your-blog
```

2. Install dependencies:

```bash
npm install
```

3. Start development server:

```bash
npm run docs:dev
```

4. Build for production:

```bash
npm run docs:build
```

### Available Scripts

- `docs:dev` - Start development server
- `docs:build` - Build for production
- `docs:preview` - Preview production build
- `lint` - Check code style (JS & Vue files)
- `lint:fix` - Fix code style issues
- `format` - Format code with Prettier
- `optimize-images` - Optimize images in docs directory
- `backup` - Create backup of docs directory
- `test` - Run tests
- `security:check` - Run security checks

### Project Structure

```
.
├── docs/                 # Documentation source files
│   ├── en/              # English content
│   ├── zh/              # Chinese content
│   └── public/          # Static assets
├── .vitepress/          # VitePress configuration
├── scripts/             # Utility scripts
└── .github/             # GitHub configurations
```

### Contributing

Please read our [Contributing Guide](./CONTRIBUTING.md) before making a contribution.

### Troubleshooting Guide

#### Common Issues and Solutions

##### 1. Node.js Version Issues

**Problem**: Build fails or dependencies don't install correctly
**Solution**: 
- Ensure you're using Node.js version 16 or higher
- Try removing `node_modules` and `package-lock.json`, then run `npm install` again

```bash
rm -rf node_modules package-lock.json
npm install
```

##### 2. Build Errors

**Problem**: VitePress build fails
**Solution**:
- Check for syntax errors in Markdown files
- Ensure all images have correct paths
- Clear the cache and rebuild:

```bash
npm run docs:clean # if available
npm run docs:build
```

##### 3. Content Not Updating

**Problem**: Changes not reflecting in development server
**Solution**:
- Stop the development server
- Clear your browser cache
- Restart the development server with:

```bash
npm run docs:dev
```

##### 4. Image Loading Issues

**Problem**: Images not displaying correctly
**Solution**:
- Verify image paths are relative to the markdown file
- Ensure images are in the correct public directory
- Use the correct image format (supported: .jpg, .png, .gif, .svg)

##### 5. Deployment Issues

**Problem**: Site not deploying correctly
**Solution**:
- Check your base URL configuration in `.vitepress/config.ts`
- Verify GitHub Actions workflow is running correctly
- Ensure all dependencies are properly listed in `package.json`

##### 6. Style Issues

**Problem**: Custom styles not applying
**Solution**:
- Check if your custom CSS is properly imported
- Verify the CSS selectors are correct
- Clear browser cache and refresh

##### 7. Performance Issues

**Problem**: Site loading slowly
**Solution**:
- Optimize image sizes
- Minimize JavaScript bundles
- Enable gzip compression on your server
- Use the built-in image optimization:

```bash
npm run optimize-images
```

#### Getting Help

If you encounter any other issues:

1. Check the [VitePress documentation](https://vitepress.dev/)
2. Search for similar issues in the project's issue tracker
3. Create a new issue with:
   - Detailed description of the problem
   - Steps to reproduce
   - Error messages
   - Environment information (OS, Node.js version, npm version)

## 中文

### 概述

这是一个使用 VitePress 构建的现代化博客，支持中英双语内容。它具有清晰的设计、优化的性能和完整的开发工具链。

### 特性

- 📝 双语支持（中文和英文）
- 🎨 清晰现代的设计
- 🚀 VitePress 驱动的静态站点生成
- 📱 响应式布局
- 🔍 SEO 优化
- 🛠️ 完整的开发工具
- 🔒 安全最佳实践

### 详细功能

#### 内容管理

- **双语内容结构**
  - 单独的英文 (`/en`) 和中文 (`/zh`) 内容目录
  - 自动语言检测和切换
  - 基于 URL 的语言路由

- **文章管理**
  - 基于 Markdown 的写作，增强语法
  - 前置元数据支持
  - 分类和标签支持
  - 草稿系统

- **资源管理**
  - 自动图像优化
  - 支持多种媒体类型（图像、视频、PDF）
  - 资源验证和断链检测
  - 公共资源目录

#### 开发功能

- **现代开发工具**
  - TypeScript 支持类型安全
  - ESLint 代码检查
  - Prettier 代码格式化
  - Husky Git 钩子
  - lint-staged 阶段文件检查

- **测试框架**
  - Vitest 单元测试
  - 覆盖率报告
  - 测试 UI 界面
  - Jest DOM 测试工具

- **安全功能**
  - NPM 审计检查
  - 依赖更新监控
  - 安全漏洞扫描
  - 自动安全检查

- **性能优化**
  - 内置性能监控
  - 图像优化工具
  - 缓存策略
  - 包大小优化

#### 质量保证

- **文档验证**
  - 自动链接检查
  - 资源验证
  - 文档结构验证
  - 拼写检查

- **代码质量**
  - 自动代码风格强制
  - 类型检查
  - 死代码检测
  - 最佳实践强制

- **持续集成**
  - 自动测试
  - 构建验证
  - 安全扫描
  - 性能基准测试

#### 备份和版本控制

- **自动备份**
  - 定期内容备份
  - 多个备份位置支持
  - 备份验证
  - 恢复程序

- **版本控制**
  - 规范化提交消息
  - 自动更新日志生成
  - 语义化版本控制
  - 发布管理

#### 开发脚本

```bash
# 内容开发
npm run docs:dev          # 启动开发服务器
npm run docs:build        # 构建生产版本
npm run docs:preview      # 预览生产构建
npm run docs:clean        # 清理构建文件
npm run docs:validate     # 验证文档
npm run docs:validate-links # 验证链接

# 质量保证
npm run verify           # 验证资源
npm run performance     # 监控性能
npm run lint            # 检查代码风格
npm run lint:fix        # 修复代码风格问题
npm run format          # 格式化代码

# 安全
npm run security:audit   # 运行安全审计
npm run security:check   # 检查安全问题
npm run security:full    # 完整安全扫描

# 测试
npm run test            # 运行测试
npm run test:coverage   # 生成覆盖率报告

# 维护
npm run optimize-images # 优化图像
npm run backup         # 创建备份
npm run changelog      # 生成更新日志
npm run release        # 创建新版本
```

#### 目录结构

```
.
├── docs/                    # 文档和内容
│   ├── .vitepress/         # VitePress 配置
│   │   ├── config.ts       # 主配置文件
│   │   ├── theme/          # 自定义主题
│   │   └── security-headers.ts # 安全头配置
│   ├── en/                 # 英文内容
│   ├── zh/                 # 中文内容
│   ├── posts/              # 博客文章
│   └── public/             # 静态资源
├── scripts/                # 实用脚本
│   ├── backup.js          # 备份工具
│   ├── optimize-images.js  # 图像优化
│   ├── performance-monitor.js # 性能监控
│   ├── security-check.js   # 安全扫描
│   ├── validate-docs.js    # 文档验证
│   ├── validate-links.js   # 链接验证
│   └── verify-assets.js    # 资源验证
└── .vitepress/            # VitePress 配置
```

### 开始使用

1. 克隆仓库：

```bash
git clone https://github.com/yourusername/your-blog.git
cd your-blog
```

2. 安装依赖：

```bash
npm install
```

3. 启动开发服务器：

```bash
npm run docs:dev
```

4. 构建生产版本：

```bash
npm run docs:build
```

### 可用脚本

- `docs:dev` - 启动开发服务器
- `docs:build` - 构建生产版本
- `docs:preview` - 预览生产构建
- `lint` - 检查代码风格（JS 和 Vue 文件）
- `lint:fix` - 修复代码风格问题
- `format` - 格式化代码
- `optimize-images` - 优化图像
- `backup` - 创建备份
- `test` - 运行测试
- `security:check` - 运行安全检查

### 项目结构

```
.
├── docs/                 # 文档源文件
│   ├── en/              # 英文内容
│   ├── zh/              # 中文内容
│   └── public/          # 静态资源
├── .vitepress/          # VitePress 配置
├── scripts/             # 实用脚本
└── .github/             # GitHub 配置
```

### 贡献

在提交贡献之前，请阅读我们的[贡献指南](./CONTRIBUTING.md)。

### 故障排除指南

#### 常见问题及解决方案

##### 1. Node.js 版本问题

**问题**: 构建失败或依赖项未正确安装
**解决方案**:
- 确保您使用的是 Node.js 版本 16 或更高版本
- 尝试删除 `node_modules` 和 `package-lock.json`，然后运行 `npm install` 再次安装

```bash
rm -rf node_modules package-lock.json
npm install
```

##### 2. 构建错误

**问题**: VitePress 构建失败
**解决方案**:
- 检查 Markdown 文件中的语法错误
- 确保所有图片路径正确
- 清除缓存并重新构建：

```bash
npm run docs:clean # 如果可用
npm run docs:build
```

##### 3. 内容未更新

**问题**: 更改未反映在开发服务器中
**解决方案**:
- 停止开发服务器
- 清除浏览器缓存
- 重新启动开发服务器：

```bash
npm run docs:dev
```

##### 4. 图片加载问题

**问题**: 图片未正确显示
**解决方案**:
- 验证图片路径是否相对于 Markdown 文件
- 确保图片位于正确的公共目录中
- 使用正确的图片格式（支持：.jpg、.png、.gif、.svg）

##### 5. 部署问题

**问题**: 网站未正确部署
**解决方案**:
- 检查 `.vitepress/config.ts` 中的基本 URL 配置
- 验证 GitHub Actions 工作流是否正确运行
- 确保所有依赖项都正确列在 `package.json` 中

##### 6. 样式问题

**问题**: 自定义样式未应用
**解决方案**:
- 检查自定义 CSS 是否正确导入
- 验证 CSS 选择器是否正确
- 清除浏览器缓存并刷新

##### 7. 性能问题

**问题**: 网站加载缓慢
**解决方案**:
- 优化图片大小
- 最小化 JavaScript 包
- 在服务器上启用 gzip 压缩
- 使用内置的图片优化：

```bash
npm run optimize-images
```

#### 获取帮助

如果您遇到其他问题：

1. 检查 [VitePress 文档](https://vitepress.dev/)
2. 在项目的 issue 跟踪器中搜索类似的问题
3. 创建一个新问题，包括：
   - 详细描述问题
   - 重现步骤
   - 错误消息
   - 环境信息（操作系统、Node.js 版本、npm 版本）

## License

MIT License - see the [LICENSE](./LICENSE) file for details.
