diff --git a/craco.config.js b/craco.config.js index fcc449b..0af321a 100644 --- a/craco.config.js +++ b/craco.config.js @@ -20,7 +20,7 @@ module.exports = { // 修改output.publicPath为'./' // webpackConfig.output.publicPath = './'; webpackConfig.output.path = path.join(__dirname,); - webpackConfig.output.publicPath = path.join(__dirname,path.sep); + webpackConfig.output.publicPath = ""; return webpackConfig; }, } diff --git a/src/comment/TopMenu.js b/elsrc/TopMenu.js similarity index 56% rename from src/comment/TopMenu.js rename to elsrc/TopMenu.js index 19046c4..006d8bd 100644 --- a/src/comment/TopMenu.js +++ b/elsrc/TopMenu.js @@ -30,24 +30,6 @@ const readDirLocal=async (filePath) => { } exports.menuRebuild = (mainWindow) => { return template = [ - // { role: 'appMenu' } - ...(isMac - ? [{ - label: app.name, - submenu: [ - {role: 'about'}, - {type: 'separator'}, - {role: 'services'}, - {type: 'separator'}, - {role: 'hide'}, - {role: 'hideOthers'}, - {role: 'unhide'}, - {type: 'separator'}, - {role: 'quit'} - ] - }] - : []), - // { role: 'fileMenu' } { label: '文件', submenu: [ @@ -89,78 +71,30 @@ exports.menuRebuild = (mainWindow) => { isMac ? {role: 'close'} : {role: 'quit'}, ] }, - // { role: 'editMenu' } { - label: 'Edit', + label: '编辑', submenu: [ - {role: 'undo'}, - {role: 'redo'}, + {label: '撤销'}, + {label: '取消撤销'}, {type: 'separator'},// 分割线 - {role: 'cut'}, - {role: 'copy'}, - {role: 'paste'}, - ...(isMac - ? [ - {role: 'pasteAndMatchStyle'}, - {role: 'delete'}, - {role: 'selectAll'}, - {type: 'separator'}, - { - label: 'Speech', - submenu: [ - {role: 'startSpeaking'}, - {role: 'stopSpeaking'} - ] - } - ] - : [ - {role: 'delete'}, - {type: 'separator'}, - {role: 'selectAll'} - ]) + {label: '剪切'}, + {label: '复制'}, + {label: '粘贴'}, ] }, // { role: 'viewMenu' } { - label: 'View', + label: '视图', submenu: [ {label: '界面布局'}, - {role: 'reload'}, - {role: 'forceReload'}, - {role: 'toggleDevTools'}, - {type: 'separator'}, - {role: 'resetZoom'}, - {role: 'zoomIn'}, - {role: 'zoomOut'}, - {type: 'separator'}, - {role: 'togglefullscreen'} - ] - }, - // { role: 'windowMenu' } - { - label: 'Window', - submenu: [ - {role: 'minimize'}, - {role: 'zoom'}, - ...(isMac - ? [ - {type: 'separator'}, - {role: 'front'}, - {type: 'separator'}, - {role: 'window'} - ] - : [ - {role: 'close'} - ]) ] }, { - role: 'help', + label: '帮助', submenu: [ { - label: 'Learn More', + label: '了解更多', click: async () => { - const {shell} = require('electron') await shell.openExternal('http://www.huaruyu.com') } } diff --git a/forge.config.js b/forge.config.js index 9a4060f..9b7948c 100644 --- a/forge.config.js +++ b/forge.config.js @@ -1,22 +1,50 @@ +const pathOp=require("path") module.exports = { - packagerConfig: {}, + packagerConfig: { + // 参考网址:https://electron.github.io/packager/main/interfaces/Options.html#afterCopy + "name": "xbb", + "executableName": "xbb", + "icon": pathOp.join(__dirname,pathOp.sep)+"public"+pathOp.sep+"favicon.ico", + "out": "build/", + "overwrite": true, + "asar":true, + "version": "1.0.0", + "copyright": "Copyright © 2023", + "platform": "linux,win32" + // "ignore": [ // 不需要打包的文件和文件夹的路径列表 + // ".git", + // ".vscode", + // "node_modules", + // ] + }, rebuildConfig: {}, makers: [ { name: '@electron-forge/maker-squirrel', - config: {}, + config: { + "name":"electron_quick_start" + }, }, { name: '@electron-forge/maker-zip', platforms: ['darwin'], + config: { + "name": "xbb", + "executableName": "xbb", + } }, { name: '@electron-forge/maker-deb', - config: {}, + config: { + "name": "xbb", + "executableName": "xbb", + }, }, { name: '@electron-forge/maker-rpm', - config: {}, + config: { + "name": "xbb" + }, }, ], }; diff --git a/main.js b/main.js index 7944fbf..33e9176 100644 --- a/main.js +++ b/main.js @@ -1,8 +1,9 @@ const {app, Menu, BrowserWindow,ipcMain,dialog} = require('electron') const path = require('path') -const {menuRebuild} = require('./src/comment/TopMenu.js') +const {menuRebuild} = require('./elsrc/TopMenu.js') const Store = require('electron-store'); const store = new Store(); +const isDev = require('electron-is-dev') const createWindow = () => { // Create the browser window. const win = new BrowserWindow({ @@ -15,11 +16,16 @@ const createWindow = () => { preload: path.join(__dirname, 'preload.js') } }) - // 加载 index.html - win.loadFile('./index.html') - // win.loadURL('http://localhost:3000') - // 打开开发工具 - win.webContents.openDevTools() + if (isDev){ + // 加载 index.html + win.loadURL('http://localhost:3000') + // 打开开发工具 + win.webContents.openDevTools() + }else { + // 加载 index.html + win.loadFile('./index.html') + } + // let okPush =false let devToolPush = false win.webContents.on('before-input-event', (event, input) => { @@ -45,17 +51,25 @@ const createWindow = () => { }) Menu.setApplicationMenu(Menu.buildFromTemplate(menuRebuild(win))) + win.once('ready-to-show', () => { + win.show() + }) + return win } // 这段程序将会在 Electron 结束初始化和创建浏览器窗口的时候调用 // 部分 API 在 ready 事件触发后才能使用。 app.whenReady().then(() => { - createWindow() + let browserWindow = createWindow(); // 在 macOS 系统内, 如果没有已开启的应用窗口 // 点击托盘图标时通常会重新创建一个新窗口 app.on('activate', () => { if (BrowserWindow.getAllWindows().length === 0) createWindow() }) + // ipcMain.on("redirectUrlTo",(event,value)=> + // browserWindow.webContents.send('redirectUrl', value) + // ) + ipcMain.handle("saveFileWithName",(listen,args)=>{ console.log("saveFileWithName") return dialog.showSaveDialog({"title":"保存文件",}) diff --git a/package-lock.json b/package-lock.json index 518ad1b..bc6b249 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.0", "license": "MIT", "dependencies": { + "electron-is-dev": "^1.1.0", "electron-squirrel-startup": "^1.0.0", "electron-store": "^8.1.0", "md5": "^2.3.0", @@ -36,8 +37,6 @@ "concurrently": "^4.1.1", "craco-less": "^2.0.0", "cross-env": "^5.2.0", - "echarts": "^5.4.1", - "echarts-for-react": "^3.0.2", "electron": "^22.1.0", "formik": "^2.2.9", "lexical": "^0.12.6", @@ -10786,36 +10785,6 @@ "safer-buffer": "^2.1.0" } }, - "node_modules/echarts": { - "version": "5.4.3", - "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.4.3.tgz", - "integrity": "sha512-mYKxLxhzy6zyTi/FaEbJMOZU1ULGEQHaeIeuMR5L+JnJTpz+YR03mnnpBhbR4+UYJAgiXgpyTVLffPAjOTLkZA==", - "dev": true, - "dependencies": { - "tslib": "2.3.0", - "zrender": "5.4.4" - } - }, - "node_modules/echarts-for-react": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/echarts-for-react/-/echarts-for-react-3.0.2.tgz", - "integrity": "sha512-DRwIiTzx8JfwPOVgGttDytBqdp5VzCSyMRIxubgU/g2n9y3VLUmF2FK7Icmg/sNVkv4+rktmrLN9w22U2yy3fA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "size-sensor": "^1.0.1" - }, - "peerDependencies": { - "echarts": "^3.0.0 || ^4.0.0 || ^5.0.0", - "react": "^15.0.0 || >=16.0.0" - } - }, - "node_modules/echarts/node_modules/tslib": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", - "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", - "dev": true - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", @@ -11269,6 +11238,11 @@ "node": ">=10" } }, + "node_modules/electron-is-dev": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/electron-is-dev/-/electron-is-dev-1.2.0.tgz", + "integrity": "sha512-R1oD5gMBPS7PVU8gJwH6CtT0e6VSoD0+SzSnYpNm+dBkcijgA+K7VAMHDfnRq/lkKPZArpzplTW6jfiMYosdzw==" + }, "node_modules/electron-packager": { "version": "17.1.1", "resolved": "https://registry.npmmirror.com/electron-packager/-/electron-packager-17.1.1.tgz", @@ -22668,6 +22642,40 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/react-scripts/node_modules/sass-loader": { + "version": "12.6.0", + "resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "dev": true, + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, "node_modules/react-scripts/node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz", @@ -23513,40 +23521,6 @@ "node": ">=12" } }, - "node_modules/sass-loader": { - "version": "12.6.0", - "resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-12.6.0.tgz", - "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", - "dev": true, - "dependencies": { - "klona": "^2.0.4", - "neo-async": "^2.6.2" - }, - "engines": { - "node": ">= 12.13.0" - }, - "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", - "sass": "^1.3.0", - "sass-embedded": "*", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - } - } - }, "node_modules/sax": { "version": "1.3.0", "resolved": "https://registry.npmmirror.com/sax/-/sax-1.3.0.tgz", @@ -23903,12 +23877,6 @@ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true }, - "node_modules/size-sensor": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/size-sensor/-/size-sensor-1.0.2.tgz", - "integrity": "sha512-2NCmWxY7A9pYKGXNBfteo4hy14gWu47rg5692peVMst6lQLPKrVjhY+UTEsPI5ceFRJSl3gVgMYaUi/hKuaiKw==", - "dev": true - }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", @@ -27182,21 +27150,6 @@ "engines": { "node": ">=10" } - }, - "node_modules/zrender": { - "version": "5.4.4", - "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.4.4.tgz", - "integrity": "sha512-0VxCNJ7AGOMCWeHVyTrGzUgrK4asT4ml9PEkeGirAkKNYXYzoPJCLvmyfdoOXcjTHPs10OZVMfD1Rwg16AZyYw==", - "dev": true, - "dependencies": { - "tslib": "2.3.0" - } - }, - "node_modules/zrender/node_modules/tslib": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", - "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", - "dev": true } } } diff --git a/package.json b/package.json index 4fc8de2..0c93c74 100644 --- a/package.json +++ b/package.json @@ -8,12 +8,12 @@ "devDependencies": { "@ant-design/pro-components": "^2.3.57", "@craco/craco": "^6.0.0", - "@excalidraw/excalidraw": "^0.17.0", "@electron-forge/cli": "^6.0.4", "@electron-forge/maker-deb": "^6.0.4", "@electron-forge/maker-rpm": "^6.0.4", "@electron-forge/maker-squirrel": "^6.0.4", "@electron-forge/maker-zip": "^6.0.4", + "@excalidraw/excalidraw": "^0.17.0", "@lexical/react": "^0.12.6", "@reduxjs/toolkit": "^1.9.3", "@testing-library/jest-dom": "^5.16.5", @@ -52,6 +52,7 @@ "make": "electron-forge make" }, "dependencies": { + "electron-is-dev": "^1.1.0", "electron-squirrel-startup": "^1.0.0", "electron-store": "^8.1.0", "md5": "^2.3.0", @@ -74,5 +75,8 @@ "last 1 firefox version", "last 1 safari version" ] + }, + "config": { + "forge": "./forge.config.js" } } diff --git a/public/index.html b/public/index.html index 3f3cae4..d10112c 100644 --- a/public/index.html +++ b/public/index.html @@ -14,11 +14,11 @@ -