chore: init v2 project scaffold
- Add electron-vite + Vue 3 + TypeScript build config - Add .gitignore with legacy/ exclusion - Add AGENTS.md with architecture & dev commands - Update README.md
This commit is contained in:
+18
@@ -0,0 +1,18 @@
|
|||||||
|
node_modules/
|
||||||
|
out/
|
||||||
|
dist/
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
|
||||||
|
# Editor
|
||||||
|
.idea
|
||||||
|
.vscode
|
||||||
|
*.suo
|
||||||
|
*.ntvs*
|
||||||
|
*.njsproj
|
||||||
|
*.sln
|
||||||
|
|
||||||
|
# Legacy codebase — archived Vue 2 version, not part of v2 build
|
||||||
|
legacy/
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
# AGENTS.md — JRedisDesktop v2
|
||||||
|
|
||||||
|
## Project identity
|
||||||
|
|
||||||
|
Fork of [AnotherRedisDesktopManager](https://github.com/qishibo/AnotherRedisDesktopManager). The legacy Vue 2 codebase lives in `legacy/` and is gitignored. Work only in the root project.
|
||||||
|
|
||||||
|
## Stack
|
||||||
|
|
||||||
|
- **Shell:** Electron 33 (`src/main/index.ts`)
|
||||||
|
- **Preload:** `src/preload/index.ts`
|
||||||
|
- **Renderer:** Vue 3 + Element Plus + Vue Router (`src/renderer/`)
|
||||||
|
- **Build:** electron-vite + Vite 6 + TypeScript 5
|
||||||
|
- **Redis client:** ioredis 5
|
||||||
|
|
||||||
|
## Commands
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run dev # electron-vite dev (HMR, renderer on :5173)
|
||||||
|
npm run build # production build → out/
|
||||||
|
npm start # preview built app
|
||||||
|
npm run build:unpack # build + electron-builder --dir
|
||||||
|
npm run build:win # build + electron-builder --win
|
||||||
|
npm run build:mac # build + electron-builder --mac
|
||||||
|
npm run build:linux # build + electron-builder --linux
|
||||||
|
```
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
```
|
||||||
|
Electron main (src/main/index.ts)
|
||||||
|
├── Dev: loads renderer dev server (Vite HMR)
|
||||||
|
└── Prod: loads out/renderer/index.html
|
||||||
|
└── Vue 3 SPA (src/renderer/)
|
||||||
|
@renderer alias → src/renderer/src/
|
||||||
|
```
|
||||||
|
|
||||||
|
## Build config
|
||||||
|
|
||||||
|
- `electron.vite.config.ts` defines three build targets: main, preload, renderer
|
||||||
|
- Renderer dev server runs on port 5173
|
||||||
|
- Main/preload use `externalizeDepsPlugin()` to keep node_modules external
|
||||||
|
|
||||||
|
## TypeScript
|
||||||
|
|
||||||
|
- Root `tsconfig.json` references `tsconfig.node.json` (main + preload) and `tsconfig.web.json` (renderer)
|
||||||
|
- Node target includes `src/main/**/*`, `src/preload/**/*`, `electron.vite.config.ts`
|
||||||
|
- Web target includes `src/renderer/**/*`
|
||||||
|
- `@renderer` alias resolves to `src/renderer/src`
|
||||||
|
|
||||||
|
## Source layout (expected)
|
||||||
|
|
||||||
|
```
|
||||||
|
src/
|
||||||
|
├── main/ # Electron main process
|
||||||
|
├── preload/ # Preload scripts
|
||||||
|
└── renderer/ # Vue 3 app
|
||||||
|
├── index.html
|
||||||
|
└── src/
|
||||||
|
```
|
||||||
|
|
||||||
|
## Legacy
|
||||||
|
|
||||||
|
The `legacy/` directory contains the old Vue 2 + Webpack 4 codebase. It is gitignored and not part of the v2 build. See `legacy/AGENTS.md` for its documentation.
|
||||||
@@ -1,3 +1,29 @@
|
|||||||
# JRedisDesktop
|
# JRedisDesktop
|
||||||
|
|
||||||
桌面端Redis客户端
|
A modern Redis desktop manager built with Electron + Vue 3 + Vite.
|
||||||
|
|
||||||
|
> Fork of [AnotherRedisDesktopManager](https://github.com/qishibo/AnotherRedisDesktopManager).
|
||||||
|
> The legacy Vue 2 codebase is archived in [`legacy/`](legacy/).
|
||||||
|
|
||||||
|
## Dev
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install
|
||||||
|
npm run dev # electron-vite dev with HMR
|
||||||
|
npm run build # production build
|
||||||
|
```
|
||||||
|
|
||||||
|
## Build packages
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run build:linux
|
||||||
|
npm run build:mac
|
||||||
|
npm run build:win
|
||||||
|
```
|
||||||
|
|
||||||
|
## Stack
|
||||||
|
|
||||||
|
- **Shell:** Electron 33
|
||||||
|
- **Renderer:** Vue 3 + Element Plus + Vue Router
|
||||||
|
- **Build:** electron-vite + Vite 6 + TypeScript
|
||||||
|
- **Redis client:** ioredis 5
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
import { defineConfig, externalizeDepsPlugin } from 'electron-vite'
|
||||||
|
import vue from '@vitejs/plugin-vue'
|
||||||
|
import { resolve } from 'path'
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
main: {
|
||||||
|
plugins: [externalizeDepsPlugin()],
|
||||||
|
build: {
|
||||||
|
outDir: 'out/main',
|
||||||
|
rollupOptions: {
|
||||||
|
input: {
|
||||||
|
index: resolve(__dirname, 'src/main/index.ts')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
preload: {
|
||||||
|
plugins: [externalizeDepsPlugin()],
|
||||||
|
build: {
|
||||||
|
outDir: 'out/preload',
|
||||||
|
rollupOptions: {
|
||||||
|
input: {
|
||||||
|
index: resolve(__dirname, 'src/preload/index.ts')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
renderer: {
|
||||||
|
root: 'src/renderer',
|
||||||
|
build: {
|
||||||
|
outDir: 'out/renderer',
|
||||||
|
rollupOptions: {
|
||||||
|
input: {
|
||||||
|
index: resolve(__dirname, 'src/renderer/index.html')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
resolve: {
|
||||||
|
alias: {
|
||||||
|
'@renderer': resolve(__dirname, 'src/renderer/src')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
plugins: [vue()],
|
||||||
|
server: {
|
||||||
|
port: 5173
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
"name": "jredis-desktop",
|
||||||
|
"version": "2.0.0",
|
||||||
|
"description": "A modern Redis desktop manager built with Electron + Vue 3 + Vite",
|
||||||
|
"author": "Jokul",
|
||||||
|
"private": true,
|
||||||
|
"main": "./out/main/index.js",
|
||||||
|
"type": "module",
|
||||||
|
"scripts": {
|
||||||
|
"dev": "electron-vite dev",
|
||||||
|
"build": "electron-vite build",
|
||||||
|
"start": "electron-vite preview",
|
||||||
|
"postinstall": "electron-builder install-app-deps",
|
||||||
|
"build:unpack": "npm run build && electron-builder --dir",
|
||||||
|
"build:win": "npm run build && electron-builder --win",
|
||||||
|
"build:mac": "npm run build && electron-builder --mac",
|
||||||
|
"build:linux": "npm run build && electron-builder --linux",
|
||||||
|
"lint": "eslint . --ext .js,.jsx,.ts,.tsx,.vue --fix"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"ioredis": "^5.7.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@vitejs/plugin-vue": "^5.2.0",
|
||||||
|
"electron": "^33.4.0",
|
||||||
|
"electron-builder": "^25.1.0",
|
||||||
|
"electron-vite": "^3.0.0",
|
||||||
|
"element-plus": "^2.9.0",
|
||||||
|
"typescript": "^5.7.0",
|
||||||
|
"vite": "^6.0.0",
|
||||||
|
"vue": "^3.5.0",
|
||||||
|
"vue-router": "^4.5.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "ESNext",
|
||||||
|
"module": "ESNext",
|
||||||
|
"moduleResolution": "bundler",
|
||||||
|
"strict": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"forceConsistentCasingInFileNames": true,
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"isolatedModules": true,
|
||||||
|
"jsx": "preserve",
|
||||||
|
"lib": ["ESNext", "DOM", "DOM.Iterable"],
|
||||||
|
"types": ["vite/client"]
|
||||||
|
},
|
||||||
|
"references": [
|
||||||
|
{ "path": "./tsconfig.node.json" },
|
||||||
|
{ "path": "./tsconfig.web.json" }
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "ESNext",
|
||||||
|
"module": "ESNext",
|
||||||
|
"moduleResolution": "bundler",
|
||||||
|
"strict": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"outDir": "./out",
|
||||||
|
"types": ["node"],
|
||||||
|
"composite": true
|
||||||
|
},
|
||||||
|
"include": ["src/main/**/*", "src/preload/**/*", "electron.vite.config.ts"]
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "ESNext",
|
||||||
|
"module": "ESNext",
|
||||||
|
"moduleResolution": "bundler",
|
||||||
|
"strict": true,
|
||||||
|
"jsx": "preserve",
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"lib": ["ESNext", "DOM", "DOM.Iterable"],
|
||||||
|
"composite": true
|
||||||
|
},
|
||||||
|
"include": ["src/renderer/**/*", "src/renderer/src/**/*.d.ts"]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user