feat: 完善本地书库与发布更新流程
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
This commit is contained in:
co-authored by
factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
parent
de3e1d8a44
commit
b8c8d24107
+27
-3
@@ -2,9 +2,11 @@ const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
const ROOT = __dirname;
|
||||
const OUT = path.join(ROOT, 'dist', 'PeopleLib-win32-x64');
|
||||
const APP = path.join(OUT, 'resources', 'app');
|
||||
const pkg = require('./package.json');
|
||||
const OUT = process.env.PEOPLELIB_OUT_DIR
|
||||
? path.resolve(process.env.PEOPLELIB_OUT_DIR)
|
||||
: path.join(ROOT, 'dist', `PeopleLib-${pkg.version}`);
|
||||
const APP = path.join(OUT, 'resources', 'app');
|
||||
const PRODUCT = 'PeopleLib';
|
||||
|
||||
function rimraf(p) { if (fs.existsSync(p)) fs.rmSync(p, { recursive: true, force: true }); }
|
||||
@@ -19,6 +21,13 @@ function copyDir(src, dst, skip) {
|
||||
}
|
||||
}
|
||||
|
||||
function pruneLocales(dir) {
|
||||
const keep = new Set(['zh-CN.pak', 'en-US.pak']);
|
||||
for (const name of fs.readdirSync(dir)) {
|
||||
if (!keep.has(name)) fs.unlinkSync(path.join(dir, name));
|
||||
}
|
||||
}
|
||||
|
||||
function skipDevFiles(e) {
|
||||
const name = e.name.toLowerCase();
|
||||
if (e.isDirectory()) return false;
|
||||
@@ -28,12 +37,25 @@ function skipDevFiles(e) {
|
||||
return false;
|
||||
}
|
||||
|
||||
function copyUndici(dst) {
|
||||
const src = path.join(ROOT, 'node_modules', 'undici');
|
||||
fs.mkdirSync(dst, { recursive: true });
|
||||
for (const name of ['package.json', 'index.js', 'index-fetch.js', 'LICENSE']) {
|
||||
const file = path.join(src, name);
|
||||
if (fs.existsSync(file)) fs.copyFileSync(file, path.join(dst, name));
|
||||
}
|
||||
copyDir(path.join(src, 'lib'), path.join(dst, 'lib'), skipDevFiles);
|
||||
}
|
||||
|
||||
console.log('清理输出目录...');
|
||||
rimraf(OUT);
|
||||
|
||||
console.log('复制 Electron 运行时...');
|
||||
copyDir(path.join(ROOT, 'node_modules', 'electron', 'dist'), OUT);
|
||||
|
||||
console.log('精简语言包...');
|
||||
pruneLocales(path.join(OUT, 'locales'));
|
||||
|
||||
console.log('重命名可执行文件...');
|
||||
fs.renameSync(path.join(OUT, 'electron.exe'), path.join(OUT, PRODUCT + '.exe'));
|
||||
rimraf(path.join(OUT, 'resources', 'default_app.asar'));
|
||||
@@ -43,10 +65,12 @@ fs.mkdirSync(APP, { recursive: true });
|
||||
fs.copyFileSync(path.join(ROOT, 'main.js'), path.join(APP, 'main.js'));
|
||||
fs.copyFileSync(path.join(ROOT, 'preload.js'), path.join(APP, 'preload.js'));
|
||||
copyDir(path.join(ROOT, 'src'), path.join(APP, 'src'), (e) => e.name.startsWith('_test'));
|
||||
copyUndici(path.join(APP, 'node_modules', 'undici'));
|
||||
|
||||
fs.writeFileSync(path.join(APP, 'package.json'), JSON.stringify({
|
||||
name: pkg.name, version: pkg.version, description: pkg.description,
|
||||
main: 'main.js', author: pkg.author, license: pkg.license
|
||||
main: 'main.js', author: pkg.author, license: pkg.license,
|
||||
dependencies: { undici: pkg.dependencies.undici }
|
||||
}, null, 2));
|
||||
|
||||
console.log('\n构建完成:');
|
||||
|
||||
Reference in New Issue
Block a user