// 替换文件名中的特定模式
const newName = oldName.replace(/pattern/g, 'replacement');
替换前缀/后缀:
// 将"old_"前缀替换为"new_"
filename.replace(/^old_/, 'new_');
替换特定字符:
// 将空格替换为下划线
filename.replace(/\s+/g, '_');
批量重命名数字序列:
// 将file1, file2等重命名为document1, document2
filename.replace(/^file(\d+)/, 'document$1');
const minified = code
.replace(/\/\/.*$/gm, '') // 删除单行注释
.replace(/\/\*[\s\S]*?\*\//g, '') // 删除多行注释
.replace(/\s+/g, ' ') // 压缩空白字符
.replace(/\s*([{};,:])\s*/g, '$1') // 删除符号周围的空格
.trim();
对于生产环境,建议使用专业工具如: - JS: UglifyJS, Terser, Babel-minify - CSS: cssnano, clean-css
const fs = require('fs');
const path = require('path');
const { minify } = require('terser'); // 用于JS
const cleanCSS = require('clean-css'); // 用于CSS
// 1. 文件名替换函数
function renameFiles(dir, pattern, replacement) {
fs.readdirSync(dir).forEach(file => {
const oldPath = path.join(dir, file);
const newName = file.replace(new RegExp(pattern, 'g'), replacement);
const newPath = path.join(dir, newName);
if (oldPath !== newPath) {
fs.renameSync(oldPath, newPath);
console.log(`Renamed: ${file} → ${newName}`);
}
});
}
// 2. 文件最小化函数
async function minifyFiles(dir, ext) {
fs.readdirSync(dir).forEach(async file => {
if (path.extname(file) === ext) {
const filePath = path.join(dir, file);
const content = fs.readFileSync(filePath, 'utf8');
let result;
if (ext === '.js') {
result = await minify(content);
} else if (ext === '.css') {
result = new cleanCSS().minify(content).styles;
}
fs.writeFileSync(filePath, result);
console.log(`Minified: ${file}`);
}
});
}
// 使用示例
const targetDir = './src/assets';
renameFiles(targetDir, 'oldprefix', 'newprefix');
minifyFiles(targetDir, '.js');
minifyFiles(targetDir, '.css');
使用捕获组重组文件名:
// 将"img-123.jpg"重命名为"image_123.jpg"
filename.replace(/(img)-(\d+)\.(jpg)/, 'image_$2.$3');
条件替换:
// 仅对特定模式的文件重命名
if (/^project_\d+/.test(filename)) {
return filename.replace(/^project_/, 'proj_');
}
结合日期时间戳:
// 添加当前日期作为前缀
const dateStr = new Date().toISOString().slice(0, 10);
return `${dateStr}_${filename}`;
希望这些方案能帮助您高效处理文件重命名和最小化任务!