electron打包配置方案

本文采用electron结合angular-electron框架开发桌面应用。electron开发的客户端能够跨平台,一套代码能够打包成不一样操做系统的应用包括主流的:windows,mac,linux。经过javascript

electron-builder模块进行打包,electron-builder.json是其配置文件:
{
  "productName": "",//打包后的app名称
  "directories": {
    "output": "app-builds"//打包输出的路径
  },
 //配置打包的文件 "files": [ "**/*", "!*.ts", "!*.code-workspace", "!LICENSE.md", "!package.json", "!package-lock.json", "!src/", "!e2e/", "!hooks/", "!.angular-cli.json", "!_config.yml", "!karma.conf.js", "!tsconfig.json", "!tslint.json" ],
  //打包windows的配置 "win": { "icon": "dist", "target": [ "portable" ] },
 //打包mac的配置 "mac": { "icon": "dist", "target": [ "dmg" ] },
//打包linux的配置 "linux": { "icon": "dist", "target": [ "AppImage" ] } }

 以上是打包时的基本配置项。java

最近开发的一个项目中遇到,开发一个桌面应用给两个用户群体使用,这两个用户群体的所使用的客户端的功能80%是相同的,并且后期也不会有很大的差别。这时就面临一个问题是用两套代码分别打包维护,仍是使用一套代码,经过配置一些参数来控制打包。因为后期若是有优化需求,那么须要在两份代码中分别修改,至关于改两便,这是比较麻烦的。最后决定采用第二种解决方案。linux

具体的实施:npm

一、在整个项目中提取出一个公共的参数来标识不一样的app,从而控制app内部一些视图的展现与否,或者功能的可用性json

{
   appClass: 0 //0,1分别表明不一样用户群体的app          
}

  

二、两个app的名字不一样能够经过在打包时加入windows

--config参数能够动态的配置参数,例如修改app的名称,--config.productName="appName"。这样就解决到了app名字的问题app

三、咱们怎么第一步的公共参数带入呢,这里个人方法是:框架

首先在根目录下定义两个配置文件devEnv.ts, officeEnv.ts,大体的格式以下electron

{
  env: 1  //这里env参数表明不一样的客户端    
}

 env参数1和0区分两个app优化

其次在第一步公共参数文件中引入env.ts

import env from 'env.ts'

export default {
     env: env.env
} 

最后改造packjson中的启动项

"electron:mac-office": cp officeEnv.ts ./src/app/env.ts && npm run build:prod && npx electron-builder build --mac --config.productName='newAppName' --config.directories.output=app-mac/mac-office",
"electron:mac": "cp devEnv.ts ./src/app/env.ts && npm run build:prod && npx electron-builder build --mac --config.directories.output=app-mac/mac-dev",
相关文章
相关标签/搜索