lingrui-web/scripts/build-static.js
榆钱落尽槿花稀 2b3ecd7164 - 优化首页、关于我们、产品服务、社会责任等页面的布局和样式
- 添加视频播放功能,支持在页面中嵌入并播放视频
- 更新新闻动态模块,支持动态加载和展示新闻内容
- 修复部分页面样式问题,提升用户体验
2025-05-15 18:35:29 +08:00

100 lines
3.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 静态生成构建脚本
const fs = require('fs');
const path = require('path');
const { execSync } = require('child_process');
// CDN基础URL
const CDN_BASE_URL = 'https://cdn.web.0rui.cn/';
// 输出目录
const OUTPUT_DIR = path.resolve(__dirname, '../.output/public');
// 执行静态生成
console.log('开始执行静态生成...');
try {
// 执行nuxt generate命令
execSync('npm run generate', { stdio: 'inherit' });
console.log('静态生成完成!');
// 检查输出目录是否存在
if (!fs.existsSync(OUTPUT_DIR)) {
console.error('错误:输出目录不存在!');
process.exit(1);
}
console.log('开始处理HTML文件中的图片路径...');
// 递归处理目录中的所有HTML文件
processDirectory(OUTPUT_DIR);
console.log('所有HTML文件处理完成');
console.log(`静态网站已生成到: ${OUTPUT_DIR}`);
console.log('可以使用 npm run preview 预览生成的静态网站');
} catch (error) {
console.error('构建过程中发生错误:', error);
process.exit(1);
}
/**
* 递归处理目录中的所有HTML文件
* @param {string} dir 目录路径
*/
function processDirectory(dir) {
const files = fs.readdirSync(dir);
for (const file of files) {
const filePath = path.join(dir, file);
const stat = fs.statSync(filePath);
if (stat.isDirectory()) {
// 递归处理子目录
processDirectory(filePath);
} else if (file.endsWith('.html')) {
// 处理HTML文件
processHtmlFile(filePath);
}
}
}
/**
* 处理HTML文件中的图片路径
* @param {string} filePath HTML文件路径
*/
function processHtmlFile(filePath) {
console.log(`处理文件: ${path.relative(OUTPUT_DIR, filePath)}`);
let content = fs.readFileSync(filePath, 'utf8');
// 替换HTML中的图片路径
// 匹配 src="public/img/xxx.png" 模式
content = content.replace(/src=\"(public\/img\/[^\"]+)\"/g, (match, p1) => {
return `src=\"${CDN_BASE_URL}${p1.replace('public/', '')}\"`;
});
// 匹配 src=\"/public/img/xxx.png\" 模式
content = content.replace(/src=\"(\/public\/img\/[^\"]+)\"/g, (match, p1) => {
return `src=\"${CDN_BASE_URL}${p1.replace('/public/', '')}\"`;
});
// 匹配 src=\"/img/xxx.png\" 模式
content = content.replace(/src=\"(\/img\/[^\"]+)\"/g, (match, p1) => {
return `src=\"${CDN_BASE_URL}${p1.replace('/img/', '')}\"`;
});
// 匹配 src=\"img/xxx.png\" 模式
content = content.replace(/src=\"(img\/[^\"]+)\"/g, (match, p1) => {
return `src=\"${CDN_BASE_URL}${p1.replace('img/', '')}\"`;
});
// 移除_nuxt前缀的图片路径
content = content.replace(/src=\"\/_nuxt\/img\/([^\"]+)\"/g, (match, p1) => {
return `src=\"${CDN_BASE_URL}${p1}\"`;
});
// 匹配 src="/_nuxt/assets/images/xxx.png" 模式
content = content.replace(/src=\"\/_nuxt\/assets\/images\/([^\"]+)\"/g, (match, p1) => {
return `src=\"${CDN_BASE_URL}${p1}\"`;
});
fs.writeFileSync(filePath, content, 'utf8');
}