Files
gdt-tool/QWEN.md
zhanggy f2d88bb3d1 refactor(创建模板): 优化文件选择界面布局和交互
移除冗余的文件选择按钮,将文件路径选择整合到文本输入框中
调整容器间距和最大宽度限制
删除已显示在输入框中的选中路径展示区域
2025-10-30 18:59:54 +08:00

235 lines
7.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Vutron - Vite + Vue 3 + Electron Template
## Project Overview
Vutron is a preconfigured template for developing cross-platform desktop applications using modern web technologies. The project combines:
- **Vite** as the build tool and development server
- **Vue 3** with TypeScript for the user interface
- **Electron** for creating desktop applications
- **Vuetify** as the UI component library
- **Pinia** for state management
- **vue-i18n** for internationalization
- **Playwright** for automated testing
The template provides a ready-to-use development environment with hot-reload, cross-platform build support, automated testing, and theme management (dark/light).
## Architecture
The project follows the typical Electron architecture with three main processes:
### Main Process (`src/main/`)
- Handles application lifecycle
- Manages windows and system integration
- Located in `src/main/index.ts`
- Also includes utilities, tray functionality, and IPC handlers
### Preload Process (`src/preload/`)
- Acts as an isolated bridge between main and renderer processes
- Uses `contextBridge` to securely expose APIs to the renderer
- Located in `src/preload/index.ts`
### Renderer Process (`src/renderer/`)
- Contains the Vue 3 application
- Uses Vuetify for UI components
- Located in `src/renderer/` with:
- Components (`src/renderer/components/`)
- Screens/views (`src/renderer/screens/`)
- Router (`src/renderer/router/index.ts`)
- State management with Pinia (`src/renderer/store/`)
- Internationalization (`src/renderer/locales/`)
- Utility functions (`src/renderer/utils/`)
## Building and Running
### Prerequisites
- Node.js >= 20.0.0
- pnpm package manager (recommended)
### Development
```bash
# Install dependencies
pnpm install
# Start development server with hot-reload
pnpm dev
# Development with debug info
pnpm dev:debug
# Force reinstall dependencies and start development
pnpm dev:debug:force
# run Typescript Type check
pnpm typecheck
```
### Building
```bash
# Build for all platforms
pnpm build:all
# Build for specific platforms
pnpm build:mac # macOS
pnpm build:win # Windows
pnpm build:linux # Linux
# Build without packaging (useful for quick testing)
pnpm build:dir
# Run type checking, formatting, and build
pnpm build
```
### Testing
```bash
# Run Playwright tests
pnpm test
# Run tests on Linux with virtual display
pnpm test:linux
```
### Linting and Formatting
```bash
# Check for linting issues
pnpm lint
# Fix linting issues automatically
pnpm lint:fix
```
## Key Features
1. **Hot Module Replacement**: Develop with instant feedback via Vite's fast hot-reload
2. **Type Safety**: Full TypeScript support across the application
3. **Internationalization**: Built-in multi-language support (11 languages available)
4. **Theme Management**: Easy switching between dark and light themes
5. **State Management**: Pinia for reactive state management
6. **Cross-platform Builds**: Build for Windows, macOS, and Linux from a single codebase
7. **Testing**: Integrated Playwright testing setup
8. **Logging**: electron-log for both main and renderer processes
9. **Security**: Secure IPC communication between processes
## Project Structure
```
├── buildAssets/ # Build configurations and icons
├── dist/ # Build output directory
├── docs/ # Documentation
├── node_modules/ # Dependencies
├── src/ # Source code
│ ├── main/ # Electron main process code
│ ├── preload/ # Preload script for context isolation
│ └── renderer/ # Vue application code
│ ├── components/ # Vue components
│ ├── locales/ # Translation files
│ ├── plugins/ # Vue plugins (i18n, Pinia, Vuetify)
│ ├── router/ # Vue Router configuration
│ ├── screens/ # Application views/pages
│ ├── store/ # Pinia stores
│ ├── utils/ # Utility functions
│ ├── App.vue # Root component
│ ├── index.html # HTML entry point
│ └── main.ts # Vue application entry point
├── tests/ # Test files
├── .vscode/ # VS Code settings
├── .editorconfig # Editor configuration
├── .gitignore # Git ignore rules
├── .prettierignore # Prettier ignore rules
├── .prettierrc # Prettier configuration
├── eslint.config.ts # ESLint configuration
├── package.json # Project dependencies and scripts
├── playwright.config.ts # Playwright test configuration
├── pnpm-lock.yaml # Dependency lock file
├── pnpm-workspace.yaml # pnpm workspace configuration
├── README.md # Project documentation
├── tsconfig.json # TypeScript configuration
├── tsconfig.node.json # TypeScript configuration for Node.js files
└── vite.config.mts # Vite configuration
```
## Development Conventions
1. **Code Style**:
- Uses ESLint with TypeScript and Vue plugin
- Formatted with Prettier
- Follows Vue 3 Composition API with TypeScript
2. **Component Structure**:
- Components use Vue 3's `<script setup>` syntax
- Written in TypeScript with proper typing
- Utilize Vuetify components for UI
3. **Internationalization**:
- Uses vue-i18n for multi-language support
- Translation files stored in `src/renderer/locales/`
- Keys are organized in JSON format
4. **State Management**:
- Uses Pinia for state management
- Stores are defined in `src/renderer/store/`
- Follow Pinia's composition store pattern
5. **Routing**:
- Uses Vue Router with web hash history
- Routes defined in `src/renderer/router/index.ts`
6. **IPC Communication**:
- Secure communication between main and renderer processes
- Uses whitelisted channels defined in preload script
- Accessible via `window.mainApi` in renderer process
## Internationalization
The application supports multiple languages with the following locale files:
- English (`en`)
- Korean (`ko`)
- Simplified Chinese (`zh-hans`)
- Traditional Chinese (`zh-hant`)
- German (`de`)
- Spanish (`es`)
- Japanese (`ja`)
- French (`fr`)
- Russian (`ru`)
- Portuguese (`pt`)
- Dutch (`nl`)
## Electron Integration
The application integrates with Electron features through:
- IPC communication for sending messages between processes
- Native file dialog support
- External link opening
- Application version retrieval
- Error handling and logging
## Testing
The project includes Playwright for end-to-end testing, with configuration in `playwright.config.ts` and test files in the `tests/` directory.
## Build Outputs
Building creates different distribution formats based on the platform:
- **macOS**: DMG installer for x64, arm64, and universal architectures
- **Windows**: APPX, ZIP, Portable, and NSIS installers (x64)
- **Linux**: SNAP, DEB, and RPM packages (x64)
Artifacts are named with the format `${productName} ${version}_${arch}.${ext}` and stored in the `release/${version}` directory.
run `pnpm typecheck` before finish the task if need,don't run `pnpm dev` or `pnpm build`.
Always respond in 中文