Browse Source

增加热更新功能,移除less

Caner 2 years ago
parent
commit
27a2f9816d
13 changed files with 48 additions and 55 deletions
  1. 2 1
      .eslintignore
  2. 3 1
      .gitignore
  3. 8 19
      electron/main.js
  4. 2 2
      electron/preload.js
  5. 0 0
      env.d.ts
  6. 1 1
      index.html
  7. 7 9
      package.json
  8. 1 1
      src/components/battery.vue
  9. 1 1
      src/components/login.vue
  10. 1 1
      src/views/index/index.vue
  11. 16 18
      tsconfig.json
  12. 2 1
      tsconfig.node.json
  13. 4 0
      vite.config.ts

+ 2 - 1
.eslintignore

@@ -1,4 +1,5 @@
 # 排除eslint检查文件
 # 排除eslint检查文件
 /dist
 /dist
 /public
 /public
-/main.js
+/electron
+/dist-electron

+ 3 - 1
.gitignore

@@ -25,4 +25,6 @@ dist-ssr
 yarn.lock
 yarn.lock
 dist
 dist
 package-lock.json
 package-lock.json
-dist-ssr
+dist-ssr
+dist-electron
+out

+ 8 - 19
main.js → electron/main.js

@@ -1,20 +1,9 @@
-const {app, BrowserWindow, Menu, ipcMain, globalShortcut } = require('electron')// 引入electron
-const path = require('path')
+const { app, BrowserWindow, Menu, ipcMain, globalShortcut } = require('electron');// 引入electron
+const path = require('path');
 let win, loadingWin;
 let win, loadingWin;
 Menu.setApplicationMenu(null) // 去掉菜单栏
 Menu.setApplicationMenu(null) // 去掉菜单栏
 app.commandLine.appendSwitch('wm-window-animations-disabled') // 拖动闪屏
 app.commandLine.appendSwitch('wm-window-animations-disabled') // 拖动闪屏
 
 
-// 消息通知
-function notifiction(title, options) {
-  const WebNotification = window.Notification || window.mozNotification || window.webkitNotification
-  const isTrue = WebNotification.requestPermission(result => {
-    return (result === 'granted') // granted(允许) || denied(拒绝)
-  })
-  const noti = new WebNotification(title, options)
-  noti.onclick = () => {
-    console.log('关闭')
-  }
-}
 
 
 // 创建loading 窗口
 // 创建loading 窗口
 const showLoading = () => {
 const showLoading = () => {
@@ -44,7 +33,7 @@ const createWindow = () => {
       contextIsolation: true,
       contextIsolation: true,
       nodeIntegration: true,
       nodeIntegration: true,
       webSecurity: false, // 去掉跨越
       webSecurity: false, // 去掉跨越
-      preload: path.join(__dirname, 'preload.js')
+      preload: path.join(__dirname, './preload.js')
     },
     },
     show: false
     show: false
   })// 创建一个窗口
   })// 创建一个窗口
@@ -55,7 +44,7 @@ const createWindow = () => {
   } else {
   } else {
     win.loadURL('http://localhost:6547/')
     win.loadURL('http://localhost:6547/')
   }
   }
-  
+
   // 事件监听
   // 事件监听
   win.on('close', () => {
   win.on('close', () => {
     // 回收BrowserWindow对象
     // 回收BrowserWindow对象
@@ -69,14 +58,14 @@ app.on('ready', async () => {
   createWindow()
   createWindow()
   // 监听渲染进行
   // 监听渲染进行
   ipcMain.once('close-loading', () => {
   ipcMain.once('close-loading', () => {
-    loadingWin.close()
-    win.show()
+    loadingWin?.close()
+    win?.show()
   })
   })
   // 在BrowserWindow创建完成后,注册全局快捷键
   // 在BrowserWindow创建完成后,注册全局快捷键
   globalShortcut.register('Control+F12', () => {
   globalShortcut.register('Control+F12', () => {
-    win.webContents.toggleDevTools()
+    win?.webContents.toggleDevTools()
   })
   })
-  
+
 })
 })
 
 
 app.on('window-all-closed', () => {
 app.on('window-all-closed', () => {

+ 2 - 2
preload.js → electron/preload.js

@@ -1,4 +1,4 @@
-const { contextBridge, ipcRenderer } = require('electron')
+const { contextBridge, ipcRenderer } = require('electron');
 const HID = require('node-hid');
 const HID = require('node-hid');
 const devices = HID.devices()
 const devices = HID.devices()
 const logitech = devices.filter(el => el.manufacturer == 'Logitech')
 const logitech = devices.filter(el => el.manufacturer == 'Logitech')
@@ -18,5 +18,5 @@ contextBridge.exposeInMainWorld('$electron', {
   send: (channel, args) => ipcRenderer.send(channel, args),
   send: (channel, args) => ipcRenderer.send(channel, args),
   once: (channel, listener) => ipcRenderer.once(channel, listener),
   once: (channel, listener) => ipcRenderer.once(channel, listener),
   on: (channel, listener) => ipcRenderer.on(channel, listener),
   on: (channel, listener) => ipcRenderer.on(channel, listener),
-  onContrl: (callBack) => data.on('data', db => callBack(db))
+  onContrl: (callBack) => data.on('data', (db) => callBack(db))
 })
 })

+ 0 - 0
src/vite-env.d.ts → env.d.ts


+ 1 - 1
index.html

@@ -23,7 +23,7 @@
 
 
 <body>
 <body>
   <div id="app"></div>
   <div id="app"></div>
-  <script type="module" src="./src/main.ts"></script>
+  <script type="module" src="/src/main.ts"></script>
 </body>
 </body>
 
 
 </html>
 </html>

+ 7 - 9
package.json

@@ -1,20 +1,17 @@
 {
 {
   "name": "contrl-client",
   "name": "contrl-client",
   "version": "1.0.0",
   "version": "1.0.0",
-  "main": "main.js",
+  "main": "electron/main.js",
   "author": "Caner",
   "author": "Caner",
   "description": "控制端",
   "description": "控制端",
   "scripts": {
   "scripts": {
-    "dev": "concurrently -k \"yarn:dev_*\"",
+    "dev": "vite",
     "build": "vue-tsc --noEmit && vite build && yarn pmake",
     "build": "vue-tsc --noEmit && vite build && yarn pmake",
-    "dev_vite": "vite",
-    "dev_electron": "electron .",
     "make": "electron-forge make",
     "make": "electron-forge make",
     "pmake": "electron-forge package"
     "pmake": "electron-forge package"
   },
   },
   "dependencies": {
   "dependencies": {
     "echarts": "^5.4.2",
     "echarts": "^5.4.2",
-    "node-hid": "^2.1.2",
     "socket.io-client": "^4.6.1",
     "socket.io-client": "^4.6.1",
     "vue": "^3.3.2",
     "vue": "^3.3.2",
     "vue-router": "^4.2.0"
     "vue-router": "^4.2.0"
@@ -25,16 +22,17 @@
     "@types/node": "^18.15.3",
     "@types/node": "^18.15.3",
     "@typescript-eslint/parser": "^5.40.0",
     "@typescript-eslint/parser": "^5.40.0",
     "@vitejs/plugin-vue": "^4.2.3",
     "@vitejs/plugin-vue": "^4.2.3",
-    "concurrently": "^8.1.0",
     "electron": "^23.1.2",
     "electron": "^23.1.2",
     "eslint": "^8.40.0",
     "eslint": "^8.40.0",
     "eslint-config-airbnb-base": "^15.0.0",
     "eslint-config-airbnb-base": "^15.0.0",
     "eslint-plugin-import": "^2.27.5",
     "eslint-plugin-import": "^2.27.5",
     "eslint-plugin-vue": "^9.13.0",
     "eslint-plugin-vue": "^9.13.0",
-    "less": "^4.1.3",
-    "typescript": "^5.0.4",
+    "node-hid": "^2.1.2",
+    "sass": "^1.63.3",
+    "typescript": "~5.0.4",
     "vite": "^4.3.6",
     "vite": "^4.3.6",
     "vite-plugin-compression": "^0.5.1",
     "vite-plugin-compression": "^0.5.1",
+    "vite-plugin-electron": "^0.11.2",
     "vite-plugin-eslint": "^1.8.1",
     "vite-plugin-eslint": "^1.8.1",
     "vite-plugin-svg-icons": "^2.0.1",
     "vite-plugin-svg-icons": "^2.0.1",
     "vue-tsc": "^1.6.5"
     "vue-tsc": "^1.6.5"
@@ -43,7 +41,7 @@
     "forge": {
     "forge": {
       "packagerConfig": {
       "packagerConfig": {
         "asar": true,
         "asar": true,
-        "ignore": "(out|vite.config.ts|README.md|.env|.gitignore|.eslintrc.json|src|public|node_modules|package-lock.json)"
+        "ignore": "(dist-electron|out|vite.config.ts|README.md|.env|.gitignore|.eslintrc.json|src|public|node_modules|package-lock.json)"
       },
       },
       "makers": [
       "makers": [
         {
         {

+ 1 - 1
src/components/battery.vue

@@ -33,7 +33,7 @@ const bgClass = computed(() => {
 })
 })
 </script>
 </script>
 
 
-<style scoped lang="less">
+<style scoped lang="scss">
 .electric {
 .electric {
   display: flex;
   display: flex;
   justify-content: center;
   justify-content: center;

+ 1 - 1
src/components/login.vue

@@ -52,7 +52,7 @@ function login() {
     </div>
     </div>
   </div>
   </div>
 </template>
 </template>
-<style scoped lang="less">
+<style scoped lang="scss">
 .login {
 .login {
   width: 100%;
   width: 100%;
   height: 100%;
   height: 100%;

+ 1 - 1
src/views/index/index.vue

@@ -298,7 +298,7 @@ onUnmounted(() => {
     @loginBack="login"
     @loginBack="login"
   />
   />
 </template>
 </template>
-<style scoped lang="less">
+<style scoped lang="scss">
 video {
 video {
   background: black;
   background: black;
   object-fit: fill;
   object-fit: fill;

+ 16 - 18
tsconfig.json

@@ -1,30 +1,28 @@
 {
 {
   "compilerOptions": {
   "compilerOptions": {
-    "target": "ESNext",
+    "target": "ES2020",
     "useDefineForClassFields": true,
     "useDefineForClassFields": true,
-    "experimentalDecorators": true,
     "module": "ESNext",
     "module": "ESNext",
-    "moduleResolution": "Node",
-    "strict": true,
-    "jsx": "preserve",
-    "sourceMap": true,
+    "lib": ["ES2020", "DOM", "DOM.Iterable"],
+    "skipLibCheck": true,
+
+    /* Bundler mode */
+    "moduleResolution": "bundler",
+    "allowImportingTsExtensions": true,
     "resolveJsonModule": true,
     "resolveJsonModule": true,
     "isolatedModules": true,
     "isolatedModules": true,
-    "esModuleInterop": true,
-    "lib": [
-      "ESNext",
-      "DOM"
-    ],
-    "skipLibCheck": true,
-    "baseUrl": "./",
-    "paths": {
-      "@/*": [
-        "src/*"
-      ]
-    },
+    "noEmit": true,
+    "jsx": "preserve",
+
+    /* Linting */
+    "strict": true,
+    "noUnusedLocals": true,
+    "noUnusedParameters": true,
+    "noFallthroughCasesInSwitch": true,
     "types": ["vite-plugin-svg-icons/client"]
     "types": ["vite-plugin-svg-icons/client"]
   },
   },
   "include": [
   "include": [
+    "*.d.ts",
     "src/**/*.ts",
     "src/**/*.ts",
     "src/**/*.d.ts",
     "src/**/*.d.ts",
     "src/**/*.tsx",
     "src/**/*.tsx",

+ 2 - 1
tsconfig.node.json

@@ -1,8 +1,9 @@
 {
 {
   "compilerOptions": {
   "compilerOptions": {
     "composite": true,
     "composite": true,
+    "skipLibCheck": true,
     "module": "ESNext",
     "module": "ESNext",
-    "moduleResolution": "Node",
+    "moduleResolution": "bundler",
     "allowSyntheticDefaultImports": true
     "allowSyntheticDefaultImports": true
   },
   },
   "include": ["vite.config.ts"]
   "include": ["vite.config.ts"]

+ 4 - 0
vite.config.ts

@@ -4,6 +4,7 @@ import eslint from 'vite-plugin-eslint'
 import viteCompression from 'vite-plugin-compression'
 import viteCompression from 'vite-plugin-compression'
 import { resolve } from 'path'
 import { resolve } from 'path'
 import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
 import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
+import electron from 'vite-plugin-electron'
 
 
 export default () => defineConfig({
 export default () => defineConfig({
   base: './',
   base: './',
@@ -21,6 +22,9 @@ export default () => defineConfig({
       // Specify symbolId format
       // Specify symbolId format
       symbolId: 'icon-[dir]-[name]'
       symbolId: 'icon-[dir]-[name]'
     }),
     }),
+    electron({
+      entry: 'electron/main.js'
+    }),
   ],
   ],
   server: {
   server: {
     host: '0.0.0.0',
     host: '0.0.0.0',