electron.build.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // https://www.electron.build/tutorials/two-package-structure
  2. const fs = require('fs')
  3. const path = require('path')
  4. const axios = require('axios')
  5. const { exec } = require('child_process')
  6. const { build } = require('electron-builder')
  7. const getPath = (dir) => path.resolve(__dirname, dir)
  8. const outputDir = getPath('dist_electron') // 打包输出目录
  9. const fileContents = fs.readFileSync(getPath('dist/config/appconfig.json'), 'utf-8')
  10. const appConfig = JSON.parse(fileContents)
  11. // 打包之前清空目录
  12. exec('rd/s/q ' + outputDir)
  13. // 打包自动修改版本号
  14. const package = fs.readFileSync(getPath('package.json'), 'utf-8')
  15. const pkg = JSON.parse(package)
  16. pkg.version = appConfig.version
  17. fs.writeFileSync(getPath('package.json'), JSON.stringify(pkg, null, 2))
  18. axios.get(appConfig.apiUrl).then((res) => {
  19. const data = res.data.data
  20. console.log(data)
  21. const config = {
  22. productName: appConfig.appName,
  23. directories: {
  24. output: outputDir
  25. },
  26. files: [
  27. 'dist',
  28. 'main.js',
  29. ],
  30. nsis: {
  31. oneClick: false,
  32. allowToChangeInstallationDirectory: true
  33. },
  34. win: {
  35. icon: getPath('dist/favicon.ico'),
  36. target: [
  37. 'nsis'
  38. ]
  39. },
  40. // 应用更新服务器地址,配置了 publish 才会生成 latest.yml 文件,和 .exe 文件一起放到该服务器地址下
  41. publish: [
  42. {
  43. provider: 'generic',
  44. url: data.pcUpdateUrl ?? ''
  45. }
  46. ]
  47. }
  48. build({
  49. config
  50. })
  51. }).catch((err) => {
  52. console.error(err)
  53. })