增加其他平台的打包指令

This commit is contained in:
2025-10-14 10:13:32 +08:00
parent 54b9abfeeb
commit 8b0359c149
5 changed files with 71 additions and 21 deletions
+2
View File
@@ -20,6 +20,8 @@ config.json
#打包文件夹 #打包文件夹
dist/ dist/
pixiv-manager-portable/ pixiv-manager-portable/
pixiv-manager-portable-linux/
pixiv-manager-portable-macos/
pixiv-manager-portable.rar pixiv-manager-portable.rar
build/ build/
zzip.bat zzip.bat
+24 -12
View File
@@ -212,7 +212,7 @@ class PixivServer {
*/ */
start() { start() {
this.server = this.app.listen(this.port, () => { this.server = this.app.listen(this.port, () => {
logger.info('Pixiv 后端服务器已启动'); logger.info('Pixiv 后端服务器已启动2');
logger.info(`服务地址: http://localhost:${this.port}`); logger.info(`服务地址: http://localhost:${this.port}`);
logger.info(`健康检查: http://localhost:${this.port}/health`); logger.info(`健康检查: http://localhost:${this.port}/health`);
logger.info(`登录状态: ${this.backend.isLoggedIn ? '已登录' : '未登录'}`); logger.info(`登录状态: ${this.backend.isLoggedIn ? '已登录' : '未登录'}`);
@@ -239,14 +239,23 @@ class PixivServer {
openBrowser() { openBrowser() {
const url = `http://localhost:${this.port}`; const url = `http://localhost:${this.port}`;
logger.info(`正在打开浏览器: ${url}`); logger.info(`正在打开浏览器: ${url}`);
const { spawn } = require('child_process'); const { spawn } = require('child_process');
const os = require('os'); const os = require('os');
const fs = require('fs');
const platform = os.platform();
// 在服务器环境中直接跳过打开浏览器
if (platform === 'linux') {
// 直接跳过 Linux 服务器环境的浏览器打开
logger.info('在 Linux 服务器环境中,跳过打开浏览器');
return;
}
let command; let command;
let args = [url]; let args = [url];
switch (os.platform()) { switch (platform) {
case 'win32': case 'win32':
command = 'cmd'; command = 'cmd';
args = ['/c', 'start', '""', url]; args = ['/c', 'start', '""', url];
@@ -254,21 +263,24 @@ class PixivServer {
case 'darwin': case 'darwin':
command = 'open'; command = 'open';
break; break;
case 'linux':
command = 'xdg-open';
break;
default: default:
logger.warn('不支持的操作系统,无法自动打开浏览器'); logger.warn('不支持的操作系统,无法自动打开浏览器');
return; return;
} }
try { try {
const child = spawn(command, args, { const child = spawn(command, args, {
detached: true, detached: true,
stdio: 'ignore' stdio: 'ignore',
}); });
// 添加错误处理
child.on('error', (err) => {
logger.warn('打开浏览器失败:', err.message);
});
child.unref(); child.unref();
logger.info('浏览器打开'); logger.info('浏览器打开命令已执行');
} catch (error) { } catch (error) {
logger.warn('打开浏览器失败:', error.message); logger.warn('打开浏览器失败:', error.message);
} }
+6
View File
@@ -6,6 +6,12 @@
const fs = require('fs'); const fs = require('fs');
const path = require('path'); const path = require('path');
const os = require('os');
// 只在 Windows 环境下设置终端标题
if (os.platform() === 'win32') {
process.title = 'Pixiv Manager';
}
// 加载配置文件 // 加载配置文件
function loadConfig() { function loadConfig() {
+5 -1
View File
@@ -17,7 +17,11 @@
"scripts": { "scripts": {
"dev": "node backend/start.js", "dev": "node backend/start.js",
"build": "pkg . && node scripts/add-icon.js", "build": "pkg . && node scripts/add-icon.js",
"bp": "npm run build && node scripts/create-portable.js" "bp": "npm run build && node scripts/create-portable.js",
"build:linux": "pkg . --targets=node18-linux-x64 --output=dist/pixiv-manager",
"build:macos": "pkg . --targets=node18-macos-x64 --output=dist/pixiv-manager",
"bp:linux": "npm run build:linux && node scripts/create-portable.js linux",
"bp:macos": "npm run build:macos && node scripts/create-portable.js macos"
}, },
"dependencies": { "dependencies": {
"adm-zip": "^0.5.16", "adm-zip": "^0.5.16",
+34 -8
View File
@@ -5,9 +5,24 @@ const { defaultLogger } = require('../backend/utils/logger');
// 创建logger实例 // 创建logger实例
const logger = defaultLogger.child('CreatePortable'); const logger = defaultLogger.child('CreatePortable');
async function createPortable() { async function createPortable(platform = 'win') {
const distDir = path.join(__dirname, '..', 'dist'); const distDir = path.join(__dirname, '..', 'dist');
const portableDir = path.join(__dirname, '..', 'pixiv-manager-portable'); let portableDir = path.join(__dirname, '..', 'pixiv-manager-portable');
// 根据平台设置不同的目录名和可执行文件名
let exeName = 'pixiv-manager.exe';
let exePath = path.join(distDir, exeName);
// 根据平台参数设置
if (platform === 'linux') {
portableDir = path.join(__dirname, '..', 'pixiv-manager-portable-linux');
exeName = 'pixiv-manager';
exePath = path.join(distDir, exeName);
} else if (platform === 'macos') {
portableDir = path.join(__dirname, '..', 'pixiv-manager-portable-macos');
exeName = 'pixiv-manager';
exePath = path.join(distDir, exeName);
}
try { try {
// 清理之前的便携版 // 清理之前的便携版
@@ -15,8 +30,6 @@ async function createPortable() {
await fs.ensureDir(portableDir); await fs.ensureDir(portableDir);
// 复制可执行文件 // 复制可执行文件
const exeName = 'pixiv-manager.exe';
const exePath = path.join(distDir, exeName);
if (await fs.pathExists(exePath)) { if (await fs.pathExists(exePath)) {
await fs.copy(exePath, path.join(portableDir, exeName)); await fs.copy(exePath, path.join(portableDir, exeName));
} }
@@ -42,13 +55,24 @@ async function createPortable() {
await fs.writeFile(path.join(portableDir, 'config.json'), JSON.stringify(config, null, 2), 'utf8'); await fs.writeFile(path.join(portableDir, 'config.json'), JSON.stringify(config, null, 2), 'utf8');
// 创建README // 创建README
let executableInstructions = '';
if (platform === 'linux') {
executableInstructions = `1. 添加执行权限: \`chmod +x pixiv-manager-linux\`
2. 运行程序: \`./pixiv-manager-linux\``;
} else if (platform === 'macos') {
executableInstructions = `1. 添加执行权限: \`chmod +x pixiv-manager-macos\`
2. 运行程序: \`./pixiv-manager-macos\``;
} else {
executableInstructions = `1. 双击 \`pixiv-manager.exe\` 启动程序`;
}
const readme = `# Pixiv Manager 便携版 const readme = `# Pixiv Manager 便携版
## 使用说明 ## 使用说明
1. 双击 \`pixiv-manager.exe\` 启动程序 ${executableInstructions}
2. 在浏览器中访问 http://localhost:3000 ${platform === 'win' ? '' : '3. '}在浏览器中访问 http://localhost:3000
3. 按 Ctrl+C 停止服务器 ${platform === 'win' ? '3' : '4'}. 按 Ctrl+C 停止服务器
## 配置设置 ## 配置设置
@@ -139,4 +163,6 @@ async function createPortable() {
} }
} }
createPortable(); // 获取命令行参数
const platform = process.argv[2] || 'win';
createPortable(platform);