//替换所有 HTML 文件
const fs = require('fs');
const path = require('path');
// S3 的 URL 前缀
const s3Url = '
https://your-bucket-name.s3-website-us-west-2.amazonaws.com/';
// 需要搜索的目录
const targetDir = 'dist';
// 递归搜索目录中的所有 HTML 文件
function findHtmlFiles(dir) {
let results = [];
const list = fs.readdirSync(dir);
list.forEach(file => {
const filePath = path.join(dir, file);
const stat = fs.statSync(filePath);
if (stat && stat.isDirectory()) {
// 递归搜索子目录
results = results.concat(findHtmlFiles(filePath));
} else if (file.endsWith('.html')) {
results.push(filePath);
}
});
return results;
}
// 替换 HTML 文件中的静态资源路径
function replaceURLs(htmlFilePath) {
fs.readFile(htmlFilePath, 'utf8', (err, data) => {
if (err) {
console.error(`❌ 读取文件失败: ${htmlFilePath}`, err);
return;
}
let modifiedData = data.replace(/src="scripts\//g, `src="${s3Url}scripts/`);
modifiedData = modifiedData.replace(/href="styles\//g, `href="${s3Url}styles/`);
modifiedData = modifiedData.replace(/src="images\//g, `src="${s3Url}images/`);
fs.writeFile(htmlFilePath, modifiedData, 'utf8', (err) => {
if (err) {
console.error(`❌ 写入文件失败: ${htmlFilePath}`, err);
} else {
console.log(`✅ 已替换文件: ${htmlFilePath}`);
}
});
});
}
// 获取所有 HTML 文件并替换路径
const htmlFiles = findHtmlFiles(targetDir);
if (htmlFiles.length === 0) {
console.log('⚠️ 没有找到 HTML 文件,检查 dist 目录是否正确。');
} else {
console.log(`🔍 找到 ${htmlFiles.length} 个 HTML 文件,正在替换路径...`);
htmlFiles.forEach(replaceURLs);
}
———————————————————
如何使用?
1. 确保你的 HTML 文件放在 dist 目录下(如果是其他目录,比如 public,请修改 const targetDir = 'dist';)。
2. 运行脚本:
node replacePaths.js
3. 脚本会自动搜索 dist 目录下的所有 HTML 文件,并替换路径:
• src="scripts/... → src="
https://your-bucket-name.s3-website-us-west-2.amazonaws.com/scripts/...
总结
✅ 自动搜索所有 HTML 文件(不需要手动指定路径)。
✅ 递归处理子目录(即 dist 目录下的所有 HTML 都会被处理)。
✅ 替换后直接覆盖原文件(不生成新文件,直接修改)。