mirror of
https://github.com/LLOneBot/LLOneBot.git
synced 2024-11-22 01:56:33 +00:00
perf: webpack config
This commit is contained in:
parent
5c2612a7ef
commit
97a315cd8a
@ -24,8 +24,8 @@
|
|||||||
"darwin"
|
"darwin"
|
||||||
],
|
],
|
||||||
"injects": {
|
"injects": {
|
||||||
"renderer": "./dist/renderer.js",
|
"renderer": "./renderer.js",
|
||||||
"main": "./dist/main.js",
|
"main": "./main.js",
|
||||||
"preload": "./dist/preload.js"
|
"preload": "./preload.js"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
3174
package-lock.json
generated
3174
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
21
package.json
21
package.json
@ -2,10 +2,13 @@
|
|||||||
"name": "llonebot",
|
"name": "llonebot",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"description": "NTQQLiteLoaderOneBotApi",
|
"description": "NTQQLiteLoaderOneBotApi",
|
||||||
"main": "index.js",
|
"main": "dist/main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "echo \"Error: no test specified\" && exit 1",
|
"test": "echo \"Error: no test specified\" && exit 1",
|
||||||
"build": "tsc & tsc -p src/tsconfig.json",
|
"build": "npm run build-main && npm run build-preload && npm run build-renderer",
|
||||||
|
"build-main": "webpack --config webpack.main.config.js",
|
||||||
|
"build-preload": "webpack --config webpack.preload.config.js",
|
||||||
|
"build-renderer": "webpack --config webpack.renderer.config.js",
|
||||||
"build-mac": "npm run build && npm run deploy-mac",
|
"build-mac": "npm run build && npm run deploy-mac",
|
||||||
"deploy-mac": "cp dist/* ~/Library/Containers/com.tencent.qq/Data/Documents/LiteLoaderQQNT/plugins/LLOnebot/",
|
"deploy-mac": "cp dist/* ~/Library/Containers/com.tencent.qq/Data/Documents/LiteLoaderQQNT/plugins/LLOnebot/",
|
||||||
"build-win": "npm run build && npm run deploy-win",
|
"build-win": "npm run build && npm run deploy-win",
|
||||||
@ -14,18 +17,16 @@
|
|||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"electron": "^27.0.2",
|
"express": "^4.18.2"
|
||||||
"express": "^4.18.2",
|
|
||||||
"path": "^0.12.7",
|
|
||||||
"stream": "^0.0.2",
|
|
||||||
"typescript": "^5.2.2",
|
|
||||||
"url": "^0.11.3"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"electron": "^27.0.2",
|
||||||
|
"@babel/preset-env": "^7.23.2",
|
||||||
"@types/express": "^4.17.20",
|
"@types/express": "^4.17.20",
|
||||||
|
"babel-loader": "^9.1.3",
|
||||||
"ts-loader": "^9.5.0",
|
"ts-loader": "^9.5.0",
|
||||||
"vite": "^4.5.0",
|
|
||||||
"webpack": "^5.89.0",
|
"webpack": "^5.89.0",
|
||||||
"webpack-cli": "^5.1.4"
|
"webpack-cli": "^5.1.4",
|
||||||
|
"typescript": "^5.2.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
1
src/global.d.ts
vendored
1
src/global.d.ts
vendored
@ -1,7 +1,6 @@
|
|||||||
import {Group, GroupMemberInfo, MessageElement, Peer, PostDataSendMsg, SendMessage, User} from "./types";
|
import {Group, GroupMemberInfo, MessageElement, Peer, PostDataSendMsg, SendMessage, User} from "./types";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
declare var LLAPI: {
|
declare var LLAPI: {
|
||||||
on(event: "new-messages", callback: (data: MessageElement[]) => void): void;
|
on(event: "new-messages", callback: (data: MessageElement[]) => void): void;
|
||||||
on(event: "context-msg-menu", callback: (event: any, target: any, msgIds:any) => void): void;
|
on(event: "context-msg-menu", callback: (event: any, target: any, msgIds:any) => void): void;
|
||||||
|
23
src/main.ts
23
src/main.ts
@ -1,14 +1,9 @@
|
|||||||
// 运行在 Electron 主进程 下的插件入口
|
// 运行在 Electron 主进程 下的插件入口
|
||||||
|
|
||||||
import {Group, PostDataSendMsg, User} from "./types";
|
|
||||||
// type {Group, PostDataSendMsg, User} = import( "./types");
|
|
||||||
// type Group = import( "./types").Group;
|
|
||||||
// type PostDataSendMsg = import( "./types").PostDataSendMsg;
|
|
||||||
// type User = import( "./types").User;
|
|
||||||
|
|
||||||
const express = require("express")
|
|
||||||
const {ipcMain, webContents} = require('electron');
|
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
import {ipcMain, webContents} from 'electron';
|
||||||
|
const express = require("express");
|
||||||
|
import {Group, PostDataSendMsg, User} from "./types";
|
||||||
|
|
||||||
const CHANNEL_SEND_MSG = "llonebot_sendMsg"
|
const CHANNEL_SEND_MSG = "llonebot_sendMsg"
|
||||||
|
|
||||||
@ -237,7 +232,13 @@ function onBrowserWindowCreated(window: any, plugin: any) {
|
|||||||
|
|
||||||
|
|
||||||
// 这两个函数都是可选的
|
// 这两个函数都是可选的
|
||||||
module.exports = {
|
// module.exports = {
|
||||||
onLoad,
|
// onLoad,
|
||||||
onBrowserWindowCreated
|
// onBrowserWindowCreated
|
||||||
|
// }
|
||||||
|
// function onLoad(plugin: any) {
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
export {
|
||||||
|
onLoad, onBrowserWindowCreated
|
||||||
}
|
}
|
@ -116,7 +116,7 @@ async function forwardMessage(message: MessageElement) {
|
|||||||
data: {},
|
data: {},
|
||||||
type: "unknown"
|
type: "unknown"
|
||||||
}
|
}
|
||||||
if (element.textElement?.atType == 2) {
|
if (element.textElement?.atType == AtType.atUser) {
|
||||||
message_data["type"] = "at"
|
message_data["type"] = "at"
|
||||||
if (element.textElement.atUid != "0") {
|
if (element.textElement.atUid != "0") {
|
||||||
message_data["data"]["mention"] = element.textElement.atUid
|
message_data["data"]["mention"] = element.textElement.atUid
|
||||||
@ -192,7 +192,7 @@ async function listenSendMessage(postData: PostDataSendMsg) {
|
|||||||
if (message.type == "at"){
|
if (message.type == "at"){
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
message.type = "text"
|
message.type = "text"
|
||||||
message.atType = 2
|
message.atType = AtType.atUser
|
||||||
let atUid = message.data?.qq || message.atUid
|
let atUid = message.data?.qq || message.atUid
|
||||||
let group = await getGroup(postData.params.group_id)
|
let group = await getGroup(postData.params.group_id)
|
||||||
let atMember = group.members.find(member => member.uin == atUid)
|
let atMember = group.members.find(member => member.uin == atUid)
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"compilerOptions": {
|
|
||||||
"target": "es6",
|
|
||||||
"module": "es6",
|
|
||||||
"outDir": "../dist",
|
|
||||||
"strict": false,
|
|
||||||
"esModuleInterop": true,
|
|
||||||
"allowSyntheticDefaultImports": true,
|
|
||||||
"moduleResolution": "node"
|
|
||||||
},
|
|
||||||
"files": ["renderer.ts"],
|
|
||||||
// "exclude": ["main.ts", "preload.ts"]
|
|
||||||
}
|
|
@ -5,12 +5,13 @@
|
|||||||
"outDir": "./dist",
|
"outDir": "./dist",
|
||||||
"strict": false,
|
"strict": false,
|
||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
|
"allowJs": true,
|
||||||
"allowSyntheticDefaultImports": true,
|
"allowSyntheticDefaultImports": true,
|
||||||
"moduleResolution": "node",
|
"moduleResolution": "node",
|
||||||
// "declaration": false
|
|
||||||
},
|
},
|
||||||
"files": ["src/main.ts", "src/preload.ts"],
|
"include": ["src/*"],
|
||||||
"exclude": [
|
"exclude": [
|
||||||
"node_modules"
|
"node_modules",
|
||||||
|
"src/types.ts"
|
||||||
]
|
]
|
||||||
}
|
}
|
@ -1,16 +0,0 @@
|
|||||||
import { defineConfig } from 'vite';
|
|
||||||
import { resolve } from 'path';
|
|
||||||
|
|
||||||
export default defineConfig({
|
|
||||||
build: {
|
|
||||||
rollupOptions: {
|
|
||||||
input: {
|
|
||||||
// renderer: resolve(__dirname, 'dist/renderer.js') // 入口文件的路径
|
|
||||||
renderer: resolve(__dirname, 'src/renderer.ts') // 入口文件的路径
|
|
||||||
},
|
|
||||||
output: {
|
|
||||||
entryFileNames: '[name].js', // 打包后的文件名
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
60
webpack.base.config.js
Normal file
60
webpack.base.config.js
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
// import path from "path";
|
||||||
|
const path = require('path');
|
||||||
|
const TerserPlugin = require('terser-webpack-plugin');
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
// target: 'node',
|
||||||
|
entry: {
|
||||||
|
// main: './src/main.ts',
|
||||||
|
// preload: './src/preload.ts'
|
||||||
|
}, // 入口文件路径
|
||||||
|
target: "node",
|
||||||
|
output: { // 输出文件配置
|
||||||
|
path: path.resolve(__dirname, 'dist'), // 输出目录路径
|
||||||
|
filename: '[name].js', // 输出文件名
|
||||||
|
// libraryTarget: "commonjs2",
|
||||||
|
// chunkFormat: "commonjs",
|
||||||
|
},
|
||||||
|
externals: [
|
||||||
|
// "express",
|
||||||
|
"electron", "fs"],
|
||||||
|
experiments: {
|
||||||
|
// outputModule: true
|
||||||
|
},
|
||||||
|
resolve: {
|
||||||
|
extensions: ['.js', '.ts']
|
||||||
|
},
|
||||||
|
module: { // 模块配置
|
||||||
|
rules: [ // 模块规则
|
||||||
|
{
|
||||||
|
test: /\.js$/, // 匹配.js文件
|
||||||
|
exclude: /node_modules/, // 排除node_modules目录
|
||||||
|
use: { // 使用的loader
|
||||||
|
loader: 'babel-loader',
|
||||||
|
options: {
|
||||||
|
presets: ['@babel/preset-env'],
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
test: /\.ts$/, // 匹配.ts文件
|
||||||
|
// exclude: /node_modules/, // 排除node_modules目录
|
||||||
|
use: { // 使用的loader
|
||||||
|
loader: 'ts-loader',
|
||||||
|
options: {
|
||||||
|
// configFile: 'src/tsconfig.json'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
optimization: {
|
||||||
|
minimize: true,
|
||||||
|
minimizer: [
|
||||||
|
new TerserPlugin({
|
||||||
|
extractComments: false,
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
}
|
||||||
|
}
|
@ -1,31 +0,0 @@
|
|||||||
const path = require('path');
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
target: 'node',
|
|
||||||
entry: './src/renderer.ts', // 入口文件路径
|
|
||||||
output: { // 输出文件配置
|
|
||||||
path: path.resolve(__dirname, 'dist'), // 输出目录路径
|
|
||||||
filename: 'bundle.js' // 输出文件名
|
|
||||||
},
|
|
||||||
module: { // 模块配置
|
|
||||||
rules: [ // 模块规则
|
|
||||||
{
|
|
||||||
test: /\.js$/, // 匹配.js文件
|
|
||||||
exclude: /node_modules/, // 排除node_modules目录
|
|
||||||
use: { // 使用的loader
|
|
||||||
loader: 'babel-loader',
|
|
||||||
options: {
|
|
||||||
presets: ['@babel/preset-env']
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
test: /\.ts$/, // 匹配.ts文件
|
|
||||||
exclude: /node_modules/, // 排除node_modules目录
|
|
||||||
use: { // 使用的loader
|
|
||||||
loader: 'ts-loader'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
10
webpack.main.config.js
Normal file
10
webpack.main.config.js
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
const baseConfig = require('./webpack.base.config.js')
|
||||||
|
|
||||||
|
baseConfig.target = 'electron-main'
|
||||||
|
baseConfig.entry = {
|
||||||
|
main: './src/main.ts',
|
||||||
|
}
|
||||||
|
baseConfig.output.libraryTarget = 'commonjs2'
|
||||||
|
baseConfig.output.chunkFormat = 'commonjs'
|
||||||
|
|
||||||
|
module.exports = baseConfig
|
9
webpack.preload.config.js
Normal file
9
webpack.preload.config.js
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
const baseConfig = require('./webpack.base.config.js')
|
||||||
|
|
||||||
|
baseConfig.target = 'electron-preload'
|
||||||
|
baseConfig.entry = {
|
||||||
|
preload: './src/preload.ts',
|
||||||
|
}
|
||||||
|
baseConfig.output.chunkFormat = 'commonjs'
|
||||||
|
baseConfig.output.libraryTarget = 'commonjs2'
|
||||||
|
module.exports = baseConfig
|
11
webpack.renderer.config.js
Normal file
11
webpack.renderer.config.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
const baseConfig = require('./webpack.base.config.js')
|
||||||
|
|
||||||
|
baseConfig.target = 'electron-renderer'
|
||||||
|
baseConfig.entry = {
|
||||||
|
renderer: './src/renderer.ts',
|
||||||
|
}
|
||||||
|
baseConfig.output.libraryTarget = 'module'
|
||||||
|
baseConfig.output.chunkFormat = 'module'
|
||||||
|
baseConfig.experiments.outputModule = true
|
||||||
|
|
||||||
|
module.exports = baseConfig
|
Loading…
x
Reference in New Issue
Block a user