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",
|
"name": "excel-batch-editor",
|
||||||
"version": "0.1.0",
|
"version": "1.0.0",
|
||||||
"description": "Electron desktop app for bulk editing Excel files",
|
|
||||||
"main": "electron/main.js",
|
"main": "electron/main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "electron .",
|
"start": "electron .",
|
||||||
"build": "electron-builder"
|
"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