前言
使用 electron-packager 打包应用,生成的 locales 文件夹中有很多语言包是应用中不会用到的(如图),然而这小小的文件夹都有 6.85M ,为了优化包体积,想在这个文件夹只保留用到的语言,其他的直接不生成。
实现
要解决这个问题,查资料,目前发现有两种方式:(基于electron-packager打包app)
1. 利用插件直接不生成不需要的文件。
使用了 electron-packager 打包文件,在配置项中添加
afterCopy
属性,值设置为[setLanguages(['en-US', 'zh-CN'])]
,setLanguages 来自electron-packager-languages
插件,需要提前安装在开发环境。
const packager = require('electron-packager');
const setLanguages = require('electron-packager-languages');
packager({
...
afterCopy: [setLanguages(['en-US', 'zh-CN'])]
})
2. 生成文件后再进行删除
在打包成功后,拿到打包后的appPaths,利用 fs 去手动删除已经生成的不要的
.pak
文件。
const packager = require('electron-packager');
const path = require('path')
const fs = require('fs)
const options = {}
packager(options).then(appPaths => {
const localesPath = path.join(appPaths.join(''), './locales');
const localesFileArr = fs.readdirSync(localesPath);
localesFileArr.forEach(lang => {
if (!lang.includes('en-US') && !lang.includes('zh-CN')) {
fs.unlink(`${localesPath}/${lang}`, (err) => throw err)
}
})
})