electron开发桌面软件自定义库

之前开发了视频转码压缩,并且上传服务器的桌面软件。

使用的是vue-electron。

因为要用到ffmpeg,所以要将这个库放到项目中去打包。

如果只是在开发模式下,放到项目中都可以读到这个路径。但是打包之后会找不到对应的路径。因为在开发环境下和生产环境下的目录结构是有些不一样的。并且vue-electron的脚手架打包是不会打包其他的文件目录。

于是自己动手改造了一下。

首先在项目根目录中创建libary目录,将ffmpeg文件夹放进去。

先找到.electron-vue/build.js
修改 function bundleApp()

function bundleApp() {
  buildConfig.mode = 'production'
  packager(buildConfig, (err, appPaths) => {
    if (err) {
      console.log(`\n${errorLog}${chalk.yellow('`electron-packager`')} says...\n`)
      console.log(err + '\n')
    } else {
      if (appPaths) {
        appPaths.forEach(p => {
          child_process.spawn('cp', ['-r', path.join(__dirname, '../libary/'), p]) 
          // 在打包的时候将libary目录也拷贝进去
        })
      }
      console.log(`\n${doneLog}\n`)
    }
  })
}

在electron主程序入口文件中 将环境变量引入进去

const path = require('path')
const ffmpegPath = process.env.NODE_ENV === 'development' ? path.resolve('./libary/ffmpeg/bin') : path.join(app.getAppPath(), '../../', '/libary/ffmpeg/bin')

process.env.FFMPEG_PATH = path.join(ffmpegPath, '/ffmpeg.exe')
process.env.FFPROBE_PATH = path.join(ffmpegPath, '/ffprobe.exe')

这样在生产环境中也能将ffmepg加载到环境变量中了