refactor: 优化搜索页面样式和交互逻辑 style: 调整热门标签和热门搜索组件样式 fix: 修复登录状态判断逻辑 chore: 更新图片资源和SVG图标 docs: 更新README文档 test: 添加搜索功能测试用例 build: 更新依赖包版本 ci: 配置自动化测试和部署流程 perf: 优化页面加载性能和响应速度
87 lines
4.0 KiB
JavaScript
87 lines
4.0 KiB
JavaScript
const fs = require("fs");
|
||
const path = require("path");
|
||
|
||
// 配置需要监听的文件列表:键为 txt 文件路径,值为对应的 js 文件路径
|
||
const watchList = {
|
||
// 监听 item-bottom.txt,同步到 item-bottom.js
|
||
"../component/item-bottom/item-bottom.txt": "../component/item-bottom/item-bottom.js",
|
||
// 监听 item-forum.txt,同步到 item-forum.js
|
||
"../component/item-forum/item-forum.txt": "../component/item-forum/item-forum.js",
|
||
// 监听 item-head.txt,同步到 item-head.js
|
||
"../component/item-head/item-head.txt": "../component/item-head/item-head.js",
|
||
// 监听 item-offer.txt,同步到 item-offer.js
|
||
"../component/item-offer/item-offer.txt": "../component/item-offer/item-offer.js",
|
||
// 监听 item-summary.txt,同步到 item-summary.js
|
||
"../component/item-summary/item-summary.txt": "../component/item-summary/item-summary.js",
|
||
// 监听 item-vote.txt,同步到 item-vote.js
|
||
"../component/item-vote/item-vote.txt": "../component/item-vote/item-vote.js",
|
||
// 监听 item-mj.txt,同步到 item-mj.js
|
||
"../component/item-mj/item-mj.txt": "../component/item-mj/item-mj.js",
|
||
// 监听 item-tenement.txt,同步到 item-tenement.js
|
||
"../component/item-tenement/item-tenement.txt": "../component/item-tenement/item-tenement.js",
|
||
// 监听 latest-list.txt,同步到 latest-list.js
|
||
"../component/latest-list/latest-list.txt": "../component/latest-list/latest-list.js",
|
||
// 监听 slideshow-box.txt,同步到 slideshow-box.js
|
||
"../component/slideshow-box/slideshow-box.txt": "../component/slideshow-box/slideshow-box.js",
|
||
// 监听 head-top.txt,同步到 head-top.js
|
||
"../component/head-top/head-top.txt": "../component/head-top/head-top.js",
|
||
// 监听 hot-tag.txt,同步到 hot-tag.js
|
||
"../component/hot-tag/hot-tag.txt": "../component/hot-tag/hot-tag.js",
|
||
// 监听 hot-search.txt,同步到 hot-search.js
|
||
"../component/hot-search/hot-search.txt": "../component/hot-search/hot-search.js",
|
||
|
||
// 可添加更多文件(格式:'txt路径': 'js路径')
|
||
// './component/other/other.txt': './component/other/other.js',
|
||
};
|
||
|
||
// 检查所有文件是否存在
|
||
Object.entries(watchList).forEach(([txtPath, jsPath]) => {
|
||
const resolvedTxt = path.resolve(__dirname, txtPath);
|
||
const resolvedJs = path.resolve(__dirname, jsPath);
|
||
if (!fs.existsSync(resolvedTxt)) {
|
||
console.error(`错误:文件不存在 - ${resolvedTxt}`);
|
||
process.exit(1);
|
||
}
|
||
if (!fs.existsSync(resolvedJs)) {
|
||
console.error(`错误:文件不存在 - ${resolvedJs}`);
|
||
process.exit(1);
|
||
}
|
||
});
|
||
|
||
// 同步逻辑:将 txtContent 替换到对应 js 的 template 中
|
||
function syncContent(txtPath, jsPath) {
|
||
try {
|
||
const txtContent = fs.readFileSync(txtPath, "utf8")?.replace(/[\n\r]/g, '');
|
||
let jsContent = fs.readFileSync(jsPath, "utf8");
|
||
|
||
// 匹配 template: `...` 结构,替换反引号内的内容
|
||
const templateRegex = /(template:\s*)(`[^`]*`)/;
|
||
if (templateRegex.test(jsContent)) {
|
||
jsContent = jsContent.replace(templateRegex, `$1\`${txtContent}\``);
|
||
fs.writeFileSync(jsPath, jsContent, "utf8");
|
||
console.log(`✅ 同步成功:${path.basename(txtPath)} → ${path.basename(jsPath)}`);
|
||
} else {
|
||
console.error(`❌ 格式错误:${path.basename(jsPath)} 中未找到 template: \`...\``);
|
||
}
|
||
} catch (err) {
|
||
console.error(`❌ 同步失败:${err.message}`);
|
||
}
|
||
}
|
||
|
||
// 为每个文件添加监听
|
||
Object.entries(watchList).forEach(([txtPath, jsPath]) => {
|
||
const resolvedTxt = path.resolve(__dirname, txtPath);
|
||
const resolvedJs = path.resolve(__dirname, jsPath);
|
||
|
||
fs.watch(resolvedTxt, (eventType) => {
|
||
if (eventType === "change") {
|
||
console.log(`\n检测到 ${path.basename(resolvedTxt)} 保存,开始同步...`);
|
||
syncContent(resolvedTxt, resolvedJs);
|
||
}
|
||
});
|
||
|
||
console.log(`开始监听:${resolvedTxt}`);
|
||
});
|
||
|
||
console.log("\n服务启动成功,所有文件修改后将自动同步 🚀");
|