Files
pixiv/scripts/create-portable.js
T

142 lines
3.4 KiB
JavaScript

const fs = require('fs-extra');
const path = require('path');
const { defaultLogger } = require('../backend/utils/logger');
// 创建logger实例
const logger = defaultLogger.child('CreatePortable');
async function createPortable() {
const distDir = path.join(__dirname, '..', 'dist');
const portableDir = path.join(__dirname, '..', 'pixiv-manager-portable');
try {
// 清理之前的便携版
await fs.remove(portableDir);
await fs.ensureDir(portableDir);
// 复制可执行文件
const exeName = 'pixiv-manager.exe';
const exePath = path.join(distDir, exeName);
if (await fs.pathExists(exePath)) {
await fs.copy(exePath, path.join(portableDir, exeName));
}
// 创建配置文件
const config = {
server: {
port: 3000,
autoOpenBrowser: true
},
proxy: {
port: null,
enabled: "auto"
},
logging: {
level: "INFO"
},
system: {
threadPoolSize: 16
}
};
await fs.writeFile(path.join(portableDir, 'config.json'), JSON.stringify(config, null, 2), 'utf8');
// 创建README
const readme = `# Pixiv Manager 便携版
## 使用说明
1. 双击 \`pixiv-manager.exe\` 启动程序
2. 在浏览器中访问 http://localhost:3000
3. 按 Ctrl+C 停止服务器
## 配置设置
如需修改配置,请用记事本编辑 \`config.json\` 文件:
### 代理设置(重要)
修改 proxy 部分:
\`\`\`json
{
"proxy": {
"port": null, // 代理端口号(auto模式下可为null)
"enabled": "auto" // 代理模式:true/false/"auto"
}
}
\`\`\`
代理模式说明:
- \`"auto"\`: 自动检测系统代理(推荐)
- \`true\`: 启用指定端口的代理
- \`false\`: 禁用代理
常见代理端口:
- Clash: 7890
- V2Ray: 10809
- Shadowsocks: 1080
**推荐使用 "auto" 模式**,程序会自动检测 Clash 等代理软件的系统代理设置。
### 服务器端口设置
修改 server 部分:
\`\`\`json
{
"server": {
"port": 3000, // 服务器端口,默认3000
"autoOpenBrowser": true // 是否自动打开浏览器
}
}
\`\`\`
### 日志级别设置
修改 logging 部分:
\`\`\`json
{
"logging": {
"level": "INFO" // 日志级别
}
}
\`\`\`
可选的日志级别:
- ERROR: 只显示错误信息
- WARN: 显示警告及以上级别信息
- INFO: 显示一般信息及以上级别信息(默认)
- DEBUG: 显示调试信息及以上级别信息
- TRACE: 显示所有级别信息(最详细)
### 系统设置
修改 system 部分:
\`\`\`json
{
"system": {
"threadPoolSize": 16 // 线程池大小,影响下载性能
}
}
\`\`\`
## 注意事项
- 首次运行可能需要几秒钟启动时间
- 程序会在当前目录创建数据文件夹
- 没代理或者代理设置错误无法成功登录,注意仔细检查,获取code的时间比较短,记得快速操作
- 支持Windows 10/11 64位系统
- 修改配置文件后需要重启程序才能生效
`;
await fs.writeFile(path.join(portableDir, 'README.txt'), readme, 'utf8');
// 创建数据目录
await fs.ensureDir(path.join(portableDir, 'data'));
await fs.ensureDir(path.join(portableDir, 'downloads'));
logger.info('便携版创建完成!');
logger.info(`位置: ${portableDir}`);
logger.info('可以将整个文件夹打包分发给用户');
} catch (error) {
logger.error('创建便携版失败', error);
}
}
createPortable();