module.exports = { // 添加应用标题配置 chainWebpack: (config) => { config.plugin("html").tap((args) => { args[0].title = "统计技能考试系统"; return args; }); }, // 输出目录 outputDir: 'dist_electron', pluginOptions: { electronBuilder: { // 基础配置 nodeIntegration: false, contextIsolation: true, // 更新preload路径为background目录下的preload.js preload: "background/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, // 额外资源配置 - 确保data目录被正确打包 extraResources: [ { from: "data", to: "data", filter: ["**/*"], // 包含data目录中的所有内容 }, { from: "background", to: "background", filter: ["**/*"], }, ], }, // 便携应用特定配置 - 修改输出结构 portable: { // 修改artifactName以控制输出路径 artifactName: "portable-app/统计技能考试系统_便携版_${version}_${arch}.exe", }, // 全局禁用签名配置 forceCodeSigning: false, asar: true, // 配置输出目录 directories: { output: "dist_electron", }, }, }, }, };