electron.build.js 1.8 KB

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