chore: Electron 主进程脚手架
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
8fe2d2bb88
commit
68f90f4e4c
34
electron/main.js
Normal file
34
electron/main.js
Normal file
@ -0,0 +1,34 @@
|
||||
const { app, BrowserWindow } = require("electron");
|
||||
const path = require("path");
|
||||
|
||||
const isDev = process.env.NODE_ENV === "development";
|
||||
|
||||
function createWindow() {
|
||||
const win = new BrowserWindow({
|
||||
width: 1200,
|
||||
height: 800,
|
||||
webPreferences: {
|
||||
preload: path.join(__dirname, "preload.js"),
|
||||
contextIsolation: true,
|
||||
nodeIntegration: false,
|
||||
},
|
||||
});
|
||||
|
||||
if (isDev) {
|
||||
win.loadURL("http://localhost:5173");
|
||||
win.webContents.openDevTools();
|
||||
} else {
|
||||
win.loadFile(path.join(__dirname, "../renderer/dist/index.html"));
|
||||
}
|
||||
}
|
||||
|
||||
app.whenReady().then(() => {
|
||||
require("./db/init");
|
||||
require("./ipc/templateIpc");
|
||||
require("./ipc/generateIpc");
|
||||
createWindow();
|
||||
});
|
||||
|
||||
app.on("window-all-closed", () => {
|
||||
if (process.platform !== "darwin") app.quit();
|
||||
});
|
||||
17
electron/preload.js
Normal file
17
electron/preload.js
Normal file
@ -0,0 +1,17 @@
|
||||
const { contextBridge, ipcRenderer } = require("electron");
|
||||
|
||||
contextBridge.exposeInMainWorld("api", {
|
||||
listTemplates: () => ipcRenderer.invoke("template:list"),
|
||||
saveTemplate: (data) => ipcRenderer.invoke("template:save", data),
|
||||
updateTemplate: (id, data) => ipcRenderer.invoke("template:update", id, data),
|
||||
deleteTemplate: (id) => ipcRenderer.invoke("template:delete", id),
|
||||
parseTemplate: (filePath) => ipcRenderer.invoke("template:parse", filePath),
|
||||
|
||||
selectFile: (filters) => ipcRenderer.invoke("file:select", filters),
|
||||
selectDirectory: () => ipcRenderer.invoke("file:selectDir"),
|
||||
openDirectory: (dirPath) => ipcRenderer.invoke("file:openDir", dirPath),
|
||||
copyFileToAppData: (srcPath, templateId) =>
|
||||
ipcRenderer.invoke("file:copyToAppData", srcPath, templateId),
|
||||
|
||||
generate: (req) => ipcRenderer.invoke("generate:run", req),
|
||||
});
|
||||
6853
package-lock.json
generated
Normal file
6853
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
28
package.json
28
package.json
@ -1,12 +1,28 @@
|
||||
{
|
||||
"name": "excel-batch-editor",
|
||||
"version": "0.1.0",
|
||||
"description": "Electron desktop app for bulk editing Excel files",
|
||||
"version": "1.0.0",
|
||||
"main": "electron/main.js",
|
||||
"scripts": {
|
||||
"dev": "electron .",
|
||||
"build": "electron-builder"
|
||||
"start": "electron .",
|
||||
"dev": "concurrently \"npm run dev:renderer\" \"wait-on http://localhost:5173 && electron .\"",
|
||||
"dev:renderer": "vite --config renderer/vite.config.js",
|
||||
"build": "vite build --config renderer/vite.config.js && electron-builder",
|
||||
"test": "cd /Users/mikivl/workspace/excel-batch-editor && python3 -m pytest tests/python/ -v"
|
||||
},
|
||||
"dependencies": {},
|
||||
"devDependencies": {}
|
||||
"devDependencies": {
|
||||
"electron": "^28.0.0",
|
||||
"electron-builder": "^24.9.1",
|
||||
"concurrently": "^8.2.2",
|
||||
"wait-on": "^7.2.0",
|
||||
"vite": "^5.0.0",
|
||||
"@vitejs/plugin-react": "^4.2.0",
|
||||
"tailwindcss": "^4.0.0",
|
||||
"@tailwindcss/vite": "^4.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"better-sqlite3": "^11.0.0",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-router-dom": "^6.22.0"
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user