module.exports = { // 添加应用标题配置 chainWebpack: (config) => { config.plugin("html").tap((args) => { args[0].title = "统计技能考试系统"; return args; }); }, // 输出目录 outputDir: 'dist_electron', pluginOptions: { electronBuilder: { // 基础配置 nodeIntegration: false, contextIsolation: true, preload: "src/preload.js", mainProcessFile: "background/main.js", lintPreloadFiles: false, externals: ["fontkit", "pdfkit"], // 主进程webpack配置 chainWebpackMainProcess: (config) => { config.module .rule("babel") .test(/\.js$/) .use("babel-loader") .loader("babel-loader") .options({ presets: ["@babel/preset-env"], plugins: [ "@babel/plugin-proposal-optional-chaining", "@babel/plugin-proposal-class-properties", ], }) .end(); // 添加对mjs文件的处理 - 兼容Electron 11 config.module .rule("mjs") .test(/\.mjs$/) .include.add(/node_modules/) .end() .type("javascript/auto"); }, // 所有构建选项都放在这里 builderOptions: { // 应用基本信息 appId: 'com.example.exam11', productName: '统计技能考试系统', // 压缩设置 compression: "store", // 入口文件配置 extraMetadata: { main: "background.js" }, // Windows构建配置 win: { // 架构设置 target: [ { target: "portable", arch: ["ia32", "x64"], }, ], // 图标设置 icon: "public/favicon.ico", // 明确禁用签名的多种配置 sign: false, signingHashAlgorithms: [], certificateFile: null, certificatePassword: null, // 额外资源配置 extraResources: [ { from: "background", to: "background", filter: ["**/*"], }, { from: "data", to: "data", filter: ["**/*"], // 确保包含data目录下的所有文件 }, { from: "portable.txt", to: ".", // 确保portable.txt文件放在根目录 }, ], }, // 便携应用特定配置 portable: { artifactName: "统计技能考试系统_便携版_${version}_${arch}.exe", }, // 发布设置 publish: { provider: 'generic', url: 'https://example.com/', }, // 全局禁用签名配置 forceCodeSigning: false, asar: true, }, }, }, };