electron.build.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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 = isBeta ? 'trading-beta' : 'trading'
  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. // https://www.electron.build/configuration/configuration
  24. const config = {
  25. appId: (appConfig.appId ?? 'com.electron.app') + (isBeta ? '_beta' : ''),
  26. productName: appConfig.appName + (isBeta ? '模拟盘' : ''),
  27. directories: {
  28. output: outputDir
  29. },
  30. files: [
  31. 'dist',
  32. 'main.js',
  33. ],
  34. nsis: {
  35. //include: './installer.nsh', // 自定义默认安装路径
  36. oneClick: false,
  37. allowToChangeInstallationDirectory: true
  38. },
  39. win: {
  40. icon: convertPath('dist/favicon.ico'),
  41. target: [
  42. 'nsis'
  43. ]
  44. },
  45. // 应用更新服务器地址,配置了 publish 才会生成 latest.yml 文件,和 .exe 文件一起放到该服务器地址下
  46. publish: [
  47. {
  48. provider: 'generic',
  49. url: data.pcUpdateUrl ?? ''
  50. }
  51. ]
  52. }
  53. build({
  54. config
  55. })
  56. }).catch((err) => {
  57. console.error(err)
  58. })