From a191fedd57f451a4f3c67124adc5ded85d5aac65 Mon Sep 17 00:00:00 2001
From: 1549469775 <1549469775@qq.com>
Date: Thu, 29 Jul 2021 16:50:39 +0800
Subject: [PATCH] add

---
 package-lock.json                     |  22 +++++------
 resource/electron/static/icon.png     | Bin 7555 -> 18332 bytes
 script/run.js                         |   2 +-
 script/webpack/webpack.main.config.js |   2 +-
 src/main/float.ts                     |  14 +++----
 src/main/index.ts                     |  65 ++++++++++++++++-----------------
 src/main/menu.ts                      |  25 +++++++------
 src/main/util/index.ts                |  12 ++++++
 src/render/index.html                 |   1 +
 test.js                               |  67 +++++++---------------------------
 vite.config.ts                        |   2 +-
 说明.md                             |   2 +
 12 files changed, 94 insertions(+), 120 deletions(-)
 create mode 100644 src/main/util/index.ts

diff --git a/package-lock.json b/package-lock.json
index 819b952..d6f7c72 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1734,7 +1734,7 @@
     },
     "@types/node": {
       "version": "15.14.3",
-      "resolved": "https://registry.nlark.com/@types/node/download/@types/node-15.14.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-15.14.3.tgz",
+      "resolved": "https://registry.nlark.com/@types/node/download/@types/node-15.14.3.tgz?cache=0&sync_timestamp=1627257813519&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-15.14.3.tgz",
       "integrity": "sha1-MwdjuXPQrKy3/czHWU4fsoHtGxw=",
       "dev": true
     },
@@ -4492,7 +4492,7 @@
     },
     "ejs": {
       "version": "3.1.6",
-      "resolved": "https://registry.npm.taobao.org/ejs/download/ejs-3.1.6.tgz",
+      "resolved": "https://registry.nlark.com/ejs/download/ejs-3.1.6.tgz",
       "integrity": "sha1-W/0KBol0O7UmizVQzO7rvBcCgio=",
       "dev": true,
       "requires": {
@@ -6365,7 +6365,7 @@
     },
     "jake": {
       "version": "10.8.2",
-      "resolved": "https://registry.npm.taobao.org/jake/download/jake-10.8.2.tgz?cache=0&sync_timestamp=1591684013969&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjake%2Fdownload%2Fjake-10.8.2.tgz",
+      "resolved": "https://registry.npm.taobao.org/jake/download/jake-10.8.2.tgz",
       "integrity": "sha1-68nehVgWCmbYLQ6txqLlj7xQCns=",
       "dev": true,
       "requires": {
@@ -6418,7 +6418,7 @@
         },
         "escape-string-regexp": {
           "version": "1.0.5",
-          "resolved": "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz?cache=0&sync_timestamp=1618677243201&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescape-string-regexp%2Fdownload%2Fescape-string-regexp-1.0.5.tgz",
+          "resolved": "https://registry.nlark.com/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz",
           "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
           "dev": true
         },
@@ -7196,7 +7196,7 @@
     },
     "object.assign": {
       "version": "4.1.2",
-      "resolved": "https://registry.npm.taobao.org/object.assign/download/object.assign-4.1.2.tgz?cache=0&sync_timestamp=1604115158081&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject.assign%2Fdownload%2Fobject.assign-4.1.2.tgz",
+      "resolved": "https://registry.nlark.com/object.assign/download/object.assign-4.1.2.tgz",
       "integrity": "sha1-DtVKNC7Os3s4/3brgxoOeIy2OUA=",
       "dev": true,
       "requires": {
@@ -9157,7 +9157,7 @@
       "dependencies": {
         "commander": {
           "version": "2.20.3",
-          "resolved": "https://registry.nlark.com/commander/download/commander-2.20.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcommander%2Fdownload%2Fcommander-2.20.3.tgz",
+          "resolved": "https://registry.nlark.com/commander/download/commander-2.20.3.tgz?cache=0&sync_timestamp=1627358203890&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcommander%2Fdownload%2Fcommander-2.20.3.tgz",
           "integrity": "sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=",
           "dev": true
         },
@@ -9174,7 +9174,7 @@
         },
         "terser": {
           "version": "5.7.1",
-          "resolved": "https://registry.nlark.com/terser/download/terser-5.7.1.tgz",
+          "resolved": "https://registry.nlark.com/terser/download/terser-5.7.1.tgz?cache=0&sync_timestamp=1624884102109&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fterser%2Fdownload%2Fterser-5.7.1.tgz",
           "integrity": "sha1-LcemEAm2a7Y4MFyyqCR2OxFr94Q=",
           "dev": true,
           "requires": {
@@ -9185,7 +9185,7 @@
           "dependencies": {
             "source-map": {
               "version": "0.7.3",
-              "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.7.3.tgz",
+              "resolved": "https://registry.nlark.com/source-map/download/source-map-0.7.3.tgz",
               "integrity": "sha1-UwL4FpAxc1ImVECS5kmB91F1A4M=",
               "dev": true
             }
@@ -9749,7 +9749,7 @@
     },
     "vite": {
       "version": "2.4.3",
-      "resolved": "https://registry.nlark.com/vite/download/vite-2.4.3.tgz?cache=0&sync_timestamp=1626783291368&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fvite%2Fdownload%2Fvite-2.4.3.tgz",
+      "resolved": "https://registry.nlark.com/vite/download/vite-2.4.3.tgz",
       "integrity": "sha1-/kqnjp3X02vLEuzL1SMTsmz633c=",
       "dev": true,
       "requires": {
@@ -9923,7 +9923,7 @@
       "dependencies": {
         "commander": {
           "version": "7.2.0",
-          "resolved": "https://registry.nlark.com/commander/download/commander-7.2.0.tgz?cache=0&sync_timestamp=1624609539421&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcommander%2Fdownload%2Fcommander-7.2.0.tgz",
+          "resolved": "https://registry.nlark.com/commander/download/commander-7.2.0.tgz?cache=0&sync_timestamp=1627358203890&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcommander%2Fdownload%2Fcommander-7.2.0.tgz",
           "integrity": "sha1-o2y1fQtQHOEI5NIFWaFQo5HZerc=",
           "dev": true
         }
@@ -10515,7 +10515,7 @@
     },
     "websocket-driver": {
       "version": "0.7.4",
-      "resolved": "https://registry.npm.taobao.org/websocket-driver/download/websocket-driver-0.7.4.tgz",
+      "resolved": "https://registry.nlark.com/websocket-driver/download/websocket-driver-0.7.4.tgz",
       "integrity": "sha1-ia1Slbv2S0gKvLox5JU6ynBvV2A=",
       "dev": true,
       "requires": {
diff --git a/resource/electron/static/icon.png b/resource/electron/static/icon.png
index 9e7ccc078807b4a98f1542a1c56e4d80c29611c2..b3ab3b8fecc7be9493f89bea4e44cb47eb9aa5e8 100644
GIT binary patch
literal 18332
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
Qr|vL#y85}Sb4q9e0A~G3KL7v#

literal 7555
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
K#2dAT&;JhxCQA<h

diff --git a/script/run.js b/script/run.js
index 7493f27..71a4b3a 100644
--- a/script/run.js
+++ b/script/run.js
@@ -10,7 +10,7 @@ if (argv.build) {
     "npm run build:in"
   ])
 } else {
-  crossEnv([
+  const process = crossEnv([
     `STATIC=${join(__dirname, '../resource/electron/static')}`,
     "PORT=3344",
     "NODE_ENV=development",
diff --git a/script/webpack/webpack.main.config.js b/script/webpack/webpack.main.config.js
index 6256392..bdaae40 100644
--- a/script/webpack/webpack.main.config.js
+++ b/script/webpack/webpack.main.config.js
@@ -57,7 +57,7 @@ let mainConfig = {
 if (process.env.NODE_ENV !== 'production') {
   mainConfig.plugins.push(
     new webpack.DefinePlugin({
-      '__static': `"${join(__dirname, '../../resource/electron/static').replace(/\\/g, '\\\\')}"`
+      '__static': `"${path.join(__dirname, '../../resource/electron/static').replace(/\\/g, '\\\\')}"`
     })
   )
 }
diff --git a/src/main/float.ts b/src/main/float.ts
index 691e7eb..baa4ffe 100644
--- a/src/main/float.ts
+++ b/src/main/float.ts
@@ -1,22 +1,19 @@
 import Shared from "./share"
-import { BrowserWindow, ipcMain, screen, Menu, shell, webContents } from "electron"
+import { getFileUrl } from './util'
+import { BrowserWindow, ipcMain, screen, Menu, shell, webContents, app } from "electron"
 // webContents
 console.log(webContents.getAllWebContents())
 
 const window: any = null //BrowserWindow.fromWebContents(webContents.getFocusedWebContents())
-const winURL =
-  process.env.NODE_ENV === "development" ? `http://localhost:${process.env.PORT}/#/float` : `file://${__dirname}/index.html#/float`
 
 ipcMain.on("@float:setPosition", (event, x, y) => {
   Shared.data.floatWindow?.setPosition(x, y)
 })
 
 ipcMain.on("showSuspensionWindow", () => {
-  console.log(24324)
-
   if (Shared.data.floatWindow) {
     if (Shared.data.floatWindow.isVisible()) {
-      createSuspensionWindow()
+      // createSuspensionWindow()
     } else {
       Shared.data.floatWindow.showInactive()
     }
@@ -73,7 +70,8 @@ ipcMain.on("createSuspensionMenu", e => {
     {
       label: "退出软件",
       click: () => {
-        Shared.data.mainWindow.close()
+        Shared.data.forceClose = true
+        app.quit()
       },
     },
   ])
@@ -101,7 +99,7 @@ function createSuspensionWindow() {
   // 设置窗口的位置 注意x轴要桌面的宽度 - 窗口的宽度
   Shared.data.floatWindow.setPosition(size.width - winSize[0], 100)
   Shared.data.floatWindow.setPosition(size.width / 2, size.height / 2)
-  Shared.data.floatWindow.loadURL(winURL)
+  Shared.data.floatWindow.loadURL(getFileUrl("float"))
 
   Shared.data.floatWindow.once("ready-to-show", () => {
     Shared.data.floatWindow.show()
diff --git a/src/main/index.ts b/src/main/index.ts
index dcece78..d429f1e 100644
--- a/src/main/index.ts
+++ b/src/main/index.ts
@@ -1,34 +1,32 @@
 /**
  * electron 主文件
  */
-'use strict'
-import Shared from './share'
-import setTray from './disk'
+"use strict"
+import Shared from "./share"
+import setTray from "./disk"
+import { getFileUrl } from "./util"
 // import '../renderer/store'
-import './facilities'
-import { app, BrowserWindow, dialog } from 'electron'
+import "./facilities"
+import { app, BrowserWindow, dialog } from "electron"
 
 Shared.data = {
-  mainWindow: null,
-  floatWindow: null,
+  mainWindow: null, // 主窗口
+  floatWindow: null, // 浮动窗口
   miniWindow: null,
   forceClose: false,
-  lastChoice: -1,
+  lastChoice: -1, // 做过的选择
 }
-console.log('asdasadsads')
+console.log("asdasadsads")
 /**
  * Set `__static` path to static files in production
  * https://simulatedgreg.gitbooks.io/electron-vue/content/en/using-static-assets.html
  */
- let isDev = process.env.NODE_ENV == "development" ? true : false
+let isDev = process.env.NODE_ENV == "development" ? true : false
 
- if (!isDev) {
-   // @ts-ignore
-   global.__static = require("path").join(__dirname, "/static").replace(/\\/g, "\\\\")
- }
-
-
-const winURL = process.env.NODE_ENV === 'development' ? `http://localhost:${process.env.PORT}/#/` : `file://${__dirname}/index.html`
+if (!isDev) {
+  // @ts-ignore
+  global.__static = require("path").join(__dirname, "/static").replace(/\\/g, "\\\\")
+}
 
 function createWindow() {
   /**
@@ -41,17 +39,18 @@ function createWindow() {
     resizable: true,
     minWidth: 450,
     minHeight: 400,
+    icon: __static + "/icon.png",
     // frame: false,
     // transparent: true,
     alwaysOnTop: false,
     webPreferences: {
       nodeIntegration: true,
-      contextIsolation: false
-    }
+      contextIsolation: false,
+    },
   })
 
-  Shared.data.mainWindow.loadURL(winURL)
-  Shared.data.mainWindow.on('close', (event:any) => {
+  Shared.data.mainWindow.loadURL(getFileUrl(""))
+  Shared.data.mainWindow.on("close", (event: any) => {
     if (Shared.data.forceClose) {
       Shared.data.mainWindow = null
       app.quit()
@@ -65,12 +64,12 @@ function createWindow() {
         event.preventDefault()
       } else {
         const choice = dialog.showMessageBoxSync(Shared.data.mainWindow, {
-          type: 'info',
-          title: 'Information',
+          type: "info",
+          title: "Information",
           defaultId: 0,
           cancelId: 0,
-          message: '确定要关闭吗?',
-          buttons: ['没事', '最小化到托盘', '直接退出']
+          message: "确定要关闭吗?",
+          buttons: ["没事", "最小化到托盘", "直接退出"],
         })
         if (choice === 1) {
           Shared.data.lastChoice = 1
@@ -98,10 +97,10 @@ const gotTheLock = app.requestSingleInstanceLock()
 if (!gotTheLock) {
   app.exit()
 } else {
-  require('./menu')
-  require('./float')
+  require("./menu")
+  require("./float")
 
-  app.on('second-instance', (event, commandLine, workingDirectory) => {
+  app.on("second-instance", (event, commandLine, workingDirectory) => {
     // 当运行第二个实例时,将会聚焦到mainWindow这个窗口
     if (Shared.data.mainWindow) {
       if (Shared.data.mainWindow.isMinimized()) Shared.data.mainWindow.restore()
@@ -110,9 +109,9 @@ if (!gotTheLock) {
     }
   })
 
-  app.on('ready', createWindow)
+  app.on("ready", createWindow)
 
-  app.on('before-quit', event => {
+  app.on("before-quit", event => {
     if (Shared.data.forceClose) {
       app.exit()
     } else {
@@ -120,13 +119,13 @@ if (!gotTheLock) {
     }
   })
 
-  app.on('window-all-closed', () => {
-    if (process.platform !== 'darwin') {
+  app.on("window-all-closed", () => {
+    if (process.platform !== "darwin") {
       app.exit()
     }
   })
 
-  app.on('activate', () => {
+  app.on("activate", () => {
     if (Shared.data.mainWindow === null) {
       createWindow()
     }
diff --git a/src/main/menu.ts b/src/main/menu.ts
index 302cd26..fe14adb 100644
--- a/src/main/menu.ts
+++ b/src/main/menu.ts
@@ -1,6 +1,7 @@
 // const path = require('path')
 import { BrowserWindow } from "electron"
 import Shared from "./share"
+import { getFileUrl } from "./util"
 const electron = require("electron")
 const setTray = require("./disk").default
 // const BrowserWindow = electron.BrowserWindow
@@ -9,12 +10,12 @@ const app = electron.app
 const dialog = electron.dialog
 const ipcMain = electron.ipcMain
 
-let newwin:BrowserWindow |null
+let newwin: BrowserWindow | null
 
 let template = [
   {
     label: "选择保存目录",
-    click: function (item:any, focusedWindow:BrowserWindow) {
+    click: function (item: any, focusedWindow: BrowserWindow) {
       dialog
         .showOpenDialog(focusedWindow, {
           properties: ["openDirectory"],
@@ -30,7 +31,7 @@ let template = [
   {
     label: "置顶",
     key: "alwaysTop",
-    click: function (item: any, focusedWindow:BrowserWindow) {
+    click: function (item: any, focusedWindow: BrowserWindow) {
       if (Shared.data.mainWindow.isAlwaysOnTop()) {
         Shared.data.mainWindow.setAlwaysOnTop(false)
       } else {
@@ -41,7 +42,7 @@ let template = [
   {
     label: "重载",
     accelerator: "CmdOrCtrl+R",
-    click: function (item: any, focusedWindow:BrowserWindow) {
+    click: function (item: any, focusedWindow: BrowserWindow) {
       if (focusedWindow) {
         // 重载之后, 刷新并关闭所有的次要窗体
         if (focusedWindow.id === 1) {
@@ -60,14 +61,14 @@ let template = [
     submenu: [
       {
         label: "悬浮窗",
-        click: function (item: any, focusedWindow:BrowserWindow) {
+        click: function (item: any, focusedWindow: BrowserWindow) {
           ipcMain.emit("showSuspensionWindow")
         },
       },
       {
         label: "最小化到托盘",
-        click: function (item: any, focusedWindow:BrowserWindow) {
-          Shared.data.lastChoice = 1;
+        click: function (item: any, focusedWindow: BrowserWindow) {
+          Shared.data.lastChoice = 1
           if (Shared.data.miniWindow) {
             Shared.data.mainWindow.hide() // 调用 最小化实例方法
           } else {
@@ -84,7 +85,7 @@ let template = [
             return "F11"
           }
         })(),
-        click: function (item: any, focusedWindow:BrowserWindow) {
+        click: function (item: any, focusedWindow: BrowserWindow) {
           if (focusedWindow) {
             focusedWindow.setFullScreen(!focusedWindow.isFullScreen())
           }
@@ -135,16 +136,16 @@ let template = [
           modal: true,
           show: false,
           resizable: false,
-          webPreferences:{
+          webPreferences: {
             nodeIntegration: true,
-            contextIsolation: false
-          }
+            contextIsolation: false,
+          },
           // parent: focusedWindow // win是主窗口
         })
         // 隐藏菜单
         newwin.setMenuBarVisibility(false)
         // vue是单页面,需要改成多页面才行
-        newwin.loadURL(process.env.NODE_ENV === "development" ? `http://localhost:${process.env.PORT}/#/about` : `file://${__dirname}#/about`)
+        newwin.loadURL(getFileUrl("about"))
         newwin.on("ready-to-show", () => {
           newwin?.show()
         })
diff --git a/src/main/util/index.ts b/src/main/util/index.ts
new file mode 100644
index 0000000..52de28f
--- /dev/null
+++ b/src/main/util/index.ts
@@ -0,0 +1,12 @@
+
+export function getFileUrl(route: string, isSPA: boolean = true) {
+  if (isSPA) {
+    const winURL =
+      process.env.NODE_ENV === "development"
+        ? `http://localhost:${process.env.PORT}/#/${route}`
+        : `file://${__dirname}/index.html#/${route}`
+    return winURL
+  } else {
+    return ""
+  }
+}
diff --git a/src/render/index.html b/src/render/index.html
index 7339905..8cf9ba4 100644
--- a/src/render/index.html
+++ b/src/render/index.html
@@ -6,6 +6,7 @@
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <!-- <meta http-equiv="Content-Security-Policy" content="default-src 'self' https: 'unsafe-inline'; style-src * 'unsafe-inline'; font-src * data:;"> -->
     <!-- <meta http-equiv="X-Content-Security-Policy" content="default-src 'self' https: 'unsafe-inline'; style-src * 'unsafe-inline'; font-src * data:;"> -->
+    <!--  -->
     <title><%- title %></title>
   </head>
   <body>
diff --git a/test.js b/test.js
index e3044ae..f9868ec 100644
--- a/test.js
+++ b/test.js
@@ -1,57 +1,18 @@
-
-// // http://localhost:3344
-// get("http://baidu.com",res=>{
-//   console.log(res.statusCode);
-// })
-// import { spawn, ChildProcess } from 'child_process'
-// spawn(
-//   electronForge,
-//   [
-//    "start",
-//    "--inspect-electron",
-//    "--app-path",
-//    join(__dirname, "dist/electron/entry.js"),//join(__dirname, `../${main}`),
-//  ] ,
-//   {
-//     stdio: 'inherit',
-//     env: Object.assign(process.env, { NODE_ENV: "development" }),
-//   })
+const { say } = require("cfonts")
 const chalk = require("chalk")
-const electron = require("electron")
-const { spawn } = require("child_process")
-const { join } = require("path")
-console.log(electron);
-
-// let child = spawn(
-//   electron,
-//   [join(__dirname, `dist/electron/entry.js`)]
-// )
-
-// if(child){
-//   setTimeout(() => {
-//     child.kill()
-//   }, 5000);
-// }
 
-function runVite () {
-  return new Promise((resolve, reject) => {
-    let viteProcess = spawn('node', [`D:/1XYX/pro/vite-electron/node_modules/vite/bin/vite.js`])
-    let isReady = false;
-    viteProcess.stdout.on('data', (data) => {
-      console.log(`${data}`);
-      if (!isReady && data.indexOf("ready") != -1) {
-        resolve()
-      }
-    });
 
-    viteProcess.stderr.on('data', (data) => {
-      console.error(`[vite err]: ${data}`);
-      reject()
-    });
-
-    viteProcess.on('close', (code) => {
-      console.log(`[vite close]: exited with code ${code}`);
-      reject()
-    });
+function electronLog(data, color) {
+  let log = ""
+  data = data.toString().split(/\r?\n/)
+  data.forEach(line => {
+    log += `  ${line}\n`
   })
-}
\ No newline at end of file
+  if (/[0-9A-z]+/.test(log)) {
+    console.log(
+      chalk[color].bold("┏ Electron -------------------") + "\n\n" + log + chalk[color].bold("┗ ----------------------------") + "\n"
+    )
+  }
+}
+
+electronLog("dfssssssssssssssssssssssssssssssssssssssssssssssss","red")
\ No newline at end of file
diff --git a/vite.config.ts b/vite.config.ts
index 9efed90..d84ef9a 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -58,7 +58,7 @@ export default defineConfig({
     minifyHtml(),
     injectHtml({
       injectData: {
-        title: "vite-plugin-htmlaa-example"
+        title: "代码片段管理工具"
       },
     }),
   ],
diff --git a/说明.md b/说明.md
index 72c397d..a53466d 100644
--- a/说明.md
+++ b/说明.md
@@ -1,5 +1,7 @@
 ### 渲染层
 
+* 必须使用hash模式,方便
+
 全局替换字符
 
 * `__static`: 静态资源字符串,注意没有用引号包裹,不能直接赋值