chore: use electron-vite build

This commit is contained in:
linyuchen 2024-03-02 10:45:42 +08:00
parent e9e8288f34
commit f7b9d599c3
11 changed files with 5158 additions and 119 deletions

58
electron.vite.config.ts Normal file
View File

@ -0,0 +1,58 @@
import cp from 'vite-plugin-cp';
import "./scripts/gen-version"
export default {
main: {
build: {
outDir: "dist/main",
emptyOutDir: true,
lib: {
formats: ["cjs"],
entry: { "main": "src/main/main.ts" },
},
rollupOptions: {
external: ["silk-wasm"],
input: "src/main/main.ts",
}
},
resolve:{
alias: {
'./lib-cov/fluent-ffmpeg': './lib/fluent-ffmpeg'
},
},
plugins: [cp({ targets: [{src: './node_modules/silk-wasm', dest: 'dist/node_modules/silk-wasm', flatten: false}, { src: './manifest.json', dest: 'dist' }] })]
},
preload: {
// vite config options
build: {
outDir: "dist/preload",
emptyOutDir: true,
lib: {
formats: ["cjs"],
entry: { "preload": "src/preload.ts" },
},
rollupOptions: {
// external: externalAll,
input: "src/preload.ts",
}
},
resolve:{
}
},
renderer: {
// vite config options
build: {
outDir: "dist/renderer",
emptyOutDir: true,
lib: {
formats: ["es"],
entry: { "renderer": "src/renderer.ts" },
},
rollupOptions: {
// external: externalAll,
input: "src/renderer.ts",
}
},
resolve:{
}
}
}

View File

@ -1,10 +1,10 @@
{ {
"manifest_version": 4, "manifest_version": 4,
"type": "extension", "type": "extension",
"name": "LLOneBot v3.11.0", "name": "LLOneBot v3.12.0",
"slug": "LLOneBot", "slug": "LLOneBot",
"description": "LiteLoaderQQNT的OneBotApi", "description": "LiteLoaderQQNT的OneBotApi",
"version": "3.11.0", "version": "3.12.0",
"thumbnail": "./icon.png", "thumbnail": "./icon.png",
"authors": [ "authors": [
{ {
@ -26,8 +26,8 @@
"darwin" "darwin"
], ],
"injects": { "injects": {
"renderer": "./renderer.js", "renderer": "./renderer/renderer.js",
"main": "./main.cjs", "main": "./main/main.cjs",
"preload": "./preload.cjs" "preload": "./preload/preload.cjs"
} }
} }

3013
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -5,16 +5,18 @@
"description": "NTQQLiteLoaderOneBotApi", "description": "NTQQLiteLoaderOneBotApi",
"main": "dist/main.js", "main": "dist/main.js",
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1", "build": "electron-vite build",
"build": "vite build", "build-mac": "npm run build && npm run deploy-mac",
"depend": "cd ./dist & npm install --omit=dev" "deploy-mac": "cp -r dist/* ~/Library/Containers/com.tencent.qq/Data/LiteLoaderQQNT/plugins/LLOneBot/",
"build-win": "npm run build && npm run deploy-win",
"deploy-win": "cmd /c \"xcopy /S /Y dist\\* %USERPROFILE%\\documents\\LiteLoaderQQNT\\plugins\\LLOneBot\\\""
}, },
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"electron-vite": "^2.0.0",
"express": "^4.18.2", "express": "^4.18.2",
"fluent-ffmpeg": "^2.1.2", "fluent-ffmpeg": "^2.1.2",
"json-bigint": "^1.0.0",
"music-metadata": "^8.1.4", "music-metadata": "^8.1.4",
"silk-wasm": "^3.2.3", "silk-wasm": "^3.2.3",
"utf-8-validate": "^6.0.3", "utf-8-validate": "^6.0.3",
@ -22,14 +24,15 @@
"ws": "^8.16.0" "ws": "^8.16.0"
}, },
"devDependencies": { "devDependencies": {
"vite": "^4.4.9",
"vite-plugin-cp": "^4.0.8",
"@types/express": "^4.17.20", "@types/express": "^4.17.20",
"@types/fluent-ffmpeg": "^2.1.24", "@types/fluent-ffmpeg": "^2.1.24",
"@types/node": "^20.11.24", "@types/node": "^20.11.24",
"@types/uuid": "^9.0.8", "@types/uuid": "^9.0.8",
"@types/ws": "^8.5.10", "@types/ws": "^8.5.10",
"electron": "^29.0.1", "electron": "^29.0.1",
"typescript": "^5.2.2" "ts-node": "^10.9.2",
"typescript": "^5.2.2",
"vite": "^5.1.4",
"vite-plugin-cp": "^4.0.8"
} }
} }

View File

@ -1,5 +1,5 @@
import fs = require("fs"); import fs from "fs";
import path = require("path"); import path from"path";
import {version} from "../src/version"; import {version} from "../src/version";
const manifestPath = path.join(__dirname, "../manifest.json"); const manifestPath = path.join(__dirname, "../manifest.json");
function readManifest(): any{ function readManifest(): any{

View File

@ -1,9 +1,7 @@
import express, {Express, Request, Response} from "express"; import express, {Express, Request, Response, json} from "express";
import {getConfigUtil, log} from "../utils"; import {getConfigUtil, log} from "../utils";
import http from "http"; import http from "http";
const JSONbig = require('json-bigint')({storeAsString: true});
type RegisterHandler = (res: Response, payload: any) => Promise<any> type RegisterHandler = (res: Response, payload: any) => Promise<any>
export abstract class HttpServerBase { export abstract class HttpServerBase {
@ -14,23 +12,7 @@ export abstract class HttpServerBase {
constructor() { constructor() {
this.expressAPP = express(); this.expressAPP = express();
this.expressAPP.use(express.urlencoded({extended: true, limit: "500mb"})); this.expressAPP.use(express.urlencoded({extended: true, limit: "500mb"}));
this.expressAPP.use((req, res, next) => { this.expressAPP.use(json({limit: "500mb"}));
let data = '';
req.on('data', chunk => {
data += chunk.toString();
});
req.on('end', () => {
if (data) {
try {
// log("receive raw", data)
req.body = JSONbig.parse(data);
} catch (e) {
return next(e);
}
}
next();
});
});
} }
authorize(req: Request, res: Response, next: () => void) { authorize(req: Request, res: Response, next: () => void) {

View File

@ -1,4 +1,4 @@
import {Server, WebSocket} from "ws"; import {WebSocket, WebSocketServer} from "ws";
import {getConfigUtil, log} from "../utils"; import {getConfigUtil, log} from "../utils";
import urlParse from "url"; import urlParse from "url";
import {IncomingMessage} from "node:http"; import {IncomingMessage} from "node:http";
@ -21,14 +21,14 @@ class WebsocketClientBase {
} }
export class WebsocketServerBase { export class WebsocketServerBase {
private ws: Server = null; private ws: WebSocketServer = null;
constructor() { constructor() {
console.log(`llonebot websocket service started`) console.log(`llonebot websocket service started`)
} }
start(port: number) { start(port: number) {
this.ws = new Server({port}); this.ws = new WebSocketServer({port});
this.ws.on("connection", (wsClient, req)=>{ this.ws.on("connection", (wsClient, req)=>{
const url = req.url.split("?").shift() const url = req.url.split("?").shift()
this.authorize(wsClient, req); this.authorize(wsClient, req);

View File

@ -1 +1 @@
export const version = "3.11.0" export const version = "3.12.0"

View File

@ -11,7 +11,8 @@
// "sourceMap": true // "sourceMap": true
}, },
"include": [ "include": [
"src/*" "src/*",
"scripts/*"
], ],
"exclude": [ "exclude": [
"node_modules", "node_modules",

View File

@ -1,41 +0,0 @@
import { InlineConfig, defineConfig } from 'vite'
import { build } from "vite";
import cp from 'vite-plugin-cp';
import pkg from './package.json' assert { type: 'json' };
const externalAll = ["electron", "fs/promises", "fs", "url", "util", "path", /node:/, ...Object.keys(pkg.dependencies)];
console.log(externalAll);
function createConfig(library: string, path: string, emptyOutDir: boolean): InlineConfig {
return {
configFile: false,
build: {
emptyOutDir: emptyOutDir,
lib: {
formats: ["cjs"],
entry: { [library]: path }
},
rollupOptions: {
external: externalAll,
}
}
};
}
export function BuildPlugin() {
build(createConfig("main", "src/main/main.ts", false));
build(createConfig("preload", "src/preload.ts", false));
}
BuildPlugin();
export default defineConfig({
build: {
emptyOutDir: false,
lib: {
formats: ['es'],
entry: { ["renderer"]: `src/renderer.ts` },
},
rollupOptions: {
external: externalAll
}
},
plugins: [cp({ targets: [{ src: './package.json', dest: 'dist' }, { src: './manifest.json', dest: 'dist' }] })]
})

2099
yarn.lock Normal file

File diff suppressed because it is too large Load Diff