Files
xuanheng-website/_tools/prune-css.js
T
dsh f81d41c5ca 初始化:炫恒网络官网(五个页面)
站点:纯静态 HTML + CSS + 原生 JS,零框架零构建
页面:首页 / 合作品牌 / 荣誉资质 / 客户案例 / 关于我们

内容:
- site/          站点本体(含已压缩 webp 图片,约 4.8 MB)
- deploy/        Docker Compose / Caddy / Apache 部署配置
- _tools/        开发自检脚本与部署脚本
- Dockerfile     自建 nginx 镜像方案
- README.md      项目文档

设计:品牌黄 #ffc107 + 白,深蓝仅用于页脚;菜单长期置顶;
      交互动效只加在关键词与区块级元素上。

素材说明:原始素材(背景图/老网站/方案/荣誉资质/合作品牌,约 290 MB)
         未纳入版本控制,站点使用的是 site/assets 内已处理压缩的图片。
2026-10-13 16:12:41 +08:00

40 lines
1.4 KiB
JavaScript

// 清理已不再使用的 CSS 规则(删除整块 @media 请谨慎,这里只删顶层规则)
const fs = require('fs');
const path = require('path');
const CSS = path.join(__dirname, '..', 'site', 'assets', 'css', 'main.css');
let css = fs.readFileSync(CSS, 'utf8');
const before = css.length;
// 这些选择器对应的结构已在改版中移除,且确认页面里没有再引用
const DEAD = [
'deco-glow', 'deco-dots', 'floatcard', 'floatcard__num', 'floatcard__txt',
'sec-head', 'sec-head--center', 'section--dark', 'btn--ghost-light',
'figure--float', 'hl', 'lead', 'text-center', 'sr-only'
];
function removeRule(src, selectorFragment) {
// 匹配「选择器块 + 紧随其后的 { ... }」(含 @media 内的一层)
const re = new RegExp(
'(^|\\n)([^\\n{}]*\\.' + selectorFragment.replace(/[-]/g, '\\-') +
'(?![\\w-])[^\\n{}]*)\\{[^{}]*\\}', 'g');
let count = 0;
const out = src.replace(re, (m, lead, sel) => {
count++;
return lead; // 保留换行,删掉整条规则
});
return [out, count];
}
let total = 0;
for (const sel of DEAD) {
const [out, n] = removeRule(css, sel);
css = out;
total += n;
if (n) console.log(' 删除 .' + sel + ' 相关规则 ' + n + ' 条');
}
css = css.replace(/\n{3,}/g, '\n\n');
fs.writeFileSync(CSS, css, 'utf8');
console.log('\nCSS 体积:' + before + ' → ' + css.length + ' 字节(删除 ' + total + ' 条规则)');