站点:纯静态 HTML + CSS + 原生 JS,零框架零构建
页面:首页 / 合作品牌 / 荣誉资质 / 客户案例 / 关于我们
内容:
- site/ 站点本体(含已压缩 webp 图片,约 4.8 MB)
- deploy/ Docker Compose / Caddy / Apache 部署配置
- _tools/ 开发自检脚本与部署脚本
- Dockerfile 自建 nginx 镜像方案
- README.md 项目文档
设计:品牌黄 #ffc107 + 白,深蓝仅用于页脚;菜单长期置顶;
交互动效只加在关键词与区块级元素上。
素材说明:原始素材(背景图/老网站/方案/荣誉资质/合作品牌,约 290 MB)
未纳入版本控制,站点使用的是 site/assets 内已处理压缩的图片。
38 lines
1.4 KiB
JavaScript
38 lines
1.4 KiB
JavaScript
// 清理未被任何页面 / CSS / JS 引用的图片资源
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const SITE = path.join(__dirname, '..', 'site');
|
|
const IMG = path.join(SITE, 'assets', 'img');
|
|
|
|
// 1) 收集所有引用
|
|
let refs = '';
|
|
for (const f of ['index.html', 'brands.html', 'honors.html', 'cases.html', 'about.html',
|
|
'assets/css/main.css', 'assets/js/main.js', 'assets/lqip.css', 'assets/lqip.js']) {
|
|
refs += fs.readFileSync(path.join(SITE, f), 'utf8');
|
|
}
|
|
// 2) 保留清单(lqip.js 里以 base64 形式存在,不需要单独文件)
|
|
const KEEP_EXTRA = [];
|
|
|
|
function walk(dir) {
|
|
let out = [];
|
|
for (const e of fs.readdirSync(dir, { withFileTypes: true })) {
|
|
const p = path.join(dir, e.name);
|
|
if (e.isDirectory()) out = out.concat(walk(p));
|
|
else out.push(p);
|
|
}
|
|
return out;
|
|
}
|
|
|
|
let removed = 0, removedBytes = 0;
|
|
for (const p of walk(IMG)) {
|
|
const rel = 'assets/img/' + path.relative(IMG, p).split(path.sep).join('/');
|
|
const name = path.basename(p);
|
|
if (refs.includes(rel) || refs.includes(name) || KEEP_EXTRA.includes(rel)) continue;
|
|
const size = fs.statSync(p).size;
|
|
fs.unlinkSync(p);
|
|
removed++; removedBytes += size;
|
|
console.log(' 删除 ' + rel + ' (' + (size / 1024).toFixed(1) + ' KB)');
|
|
}
|
|
console.log('\n共删除 ' + removed + ' 个未引用文件,释放 ' + (removedBytes / 1024).toFixed(0) + ' KB');
|