electron打包或安装完应用后,有个locales目录,里面包含了大量的语言文件,加起来有6.5M的大小。
如何移除不用的语言文件
下面以只需要用到中文(zh-CN)为例:
1.主进程中(background.js)添加命令
app.commandLine.appendSwitch('lang', 'zh-CN'); // 放在app ready前 app.on('ready', ...)
2.配置electron-builder的 afterPack
我用的vue-cli-plugin-electron-builder, electron-builder配置在vue.config.js中,如下
module.exports = {
...,
pluginOptions: {
...,
electronBuilder: {
...,
builderOptions: {
...,
afterPack: 'build/hooks/afterPack.js', //打包完后的处理
},
},
},
}
3.打包后移除不用的语言文件
//build/hooks/afterPack.js
//参考 https://www.electron.build/configuration/configuration#afterpack
exports.default = async function(context) {
//console.log(context)
const fs = require('fs')
const localeDir = context.appOutDir + '/locales/'
fs.readdir(localeDir, function(err, files) {
if (!(files && files.length)) return
for (let i = 0, len = files.length; i < len; i++) {
const match = files[i].match(/zh-CN\.pak/) //只保留中文
if (match === null) {
fs.unlinkSync(localeDir + files[i])
}
}
})
}
这样打包后体积大约可以减少1.5M左右,还是比较可观的