electron 隐藏packege.json下的各个组件包版本信息

在json中增加钩子函数afterPack,打包之后执行

{

  "asar": true,

  "files": [

    "**/*",

    "!frontend/",

    "!run/",

    "!logs/",

    "!data/"

  ],

  "extraResources": {

    "from": "build/extraResources/",

    "to": "extraResources"

  },

  "nsis": {

    "oneClick": false,

    "allowElevation": true,

    "allowToChangeInstallationDirectory": true,

    "installerIcon": "build/icons/icon.ico",

    "uninstallerIcon": "build/icons/icon.ico",

    "installerHeaderIcon": "build/icons/icon.ico",

    "createDesktopShortcut": true,

    "createStartMenuShortcut": true,

    "shortcutName": "EE框架"

  },

  "mac": {

    "icon": "build/icons/icon.icns",

    "artifactName": "${productName}-${os}-${version}-${arch}.${ext}",

    "darkModeSupport": true,

    "hardenedRuntime": false

  },

  "win": {

    "icon": "build/icons/icon.ico",

    "artifactName": "${productName}-${os}-${version}-${arch}.${ext}",

    "target": [

      {

        "target": "nsis"

      }

    ]

  },

  "linux": {

    "icon": "build/icons/icon.icns",

    "artifactName": "${productName}-${os}-${version}-${arch}.${ext}",

    "target": [

      "deb"

    ],

    "category": "Utility"

  },

  "afterPack": "./.electron-vue/hook/myAfterPackHook.js"

}

myAfterPackHook.js 

let platform =process.platform

const path = require('path');

const asar = require('asar');

const fs = require('fs');

let pkgName = "win-ia32-unpacked"

switch(platform) {

  // case 'aix':  

  //     console.log("IBM AIX platform");

  //     break;

  // case 'darwin':  

  //     console.log("Darwin platfrom(MacOS, IOS etc)");

  //     break;

  // case 'freebsd':  

  //     console.log("FreeBSD Platform");

  //     break;

  case 'linux':  

      pkgName = "linux-unpacked"// 打包的linux是64位的

      console.log("Linux Platform");

      break;

  // case 'openbsd':  

  //     console.log("OpenBSD platform");

  //     break;

  // case 'sunos':  

  //     console.log("SunOS platform");

  //     break;

  case 'win32':

      console.log("windows platform");

      break;    

  default:  

      console.log("unknown platform");

}

const __build = path.join(__dirname, '../../', 'build')

const appPath = path.join(__build,pkgName,'resources', 'app.asar');

const pkgPath = 'package.json';

module.exports.default = async function(context) {

  // 如果文件存在则处理,否则不做处理

  fs.stat(appPath,(err,stats)=>{

    if(err){

      console.error("这个问题可忽略",err);

    }else{

      try{

        asar.extractAll(appPath, path.join(__build, 'temp'))

        const pkg = require(path.join(__build, 'temp', pkgPath));

        // pkg.version = '1.0.1'; // 修改 version 版本号

        // 移除所有的依赖和版本

        pkg.dependencies = []

        fs.writeFileSync(path.join(__build, 'temp', pkgPath), JSON.stringify(pkg, null, 2), {encoding: 'utf8'});

        asar.createPackage(path.join(__build, 'temp'), appPath);

      }catch(e){

        console.error(e);

      }

    }

  })

}

核心思路是:将打包的app.asar文件解压,移除掉package.json中的 dependencies,然后再打包为app.asar

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值