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
|
||||
|
||||
桌面端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