返回

Node 实现文件路径替换,一键更新压缩包中文件路径

前端







## Node 实现文件路径替换

本篇文章将分享一个简易路径替换工具。该工具的功能很简单,重点在于掌握以下几个方面的知识:

* 递归遍历文件夹目录
* 正则替换目标内容
* 解压上传文件
* 返回更新后的压缩文件

### **实现步骤** 

1. **安装必要的依赖库** 

npm install -g cross-zip node-glob


2. **创建 Node.js 脚本** 

// replace-path.js
const crossZip = require('cross-zip');
const glob = require('glob');

// 定义目标目录
const targetDir = './target';

// 定义要替换的路径模式
const oldPathPattern = /old-path/g;

// 定义替换后的路径
const newPath = 'new-path';

// 递归遍历文件夹目录
glob(${targetDir}/**/*, (err, files) => {
if (err) {
console.error(err);
return;
}

// 循环处理每个文件
files.forEach((file) => {
// 检查文件是否为压缩包
if (file.endsWith('.zip')) {
// 解压压缩包
crossZip.unzip(file, targetDir);

  // 替换压缩包中文件路径
  const filesInZip = glob.sync(`${targetDir}/**/*`);
  filesInZip.forEach((fileInZip) => {
    // 读取文件内容
    const content = fs.readFileSync(fileInZip, 'utf-8');

    // 替换路径
    const newContent = content.replace(oldPathPattern, newPath);

    // 写入文件
    fs.writeFileSync(fileInZip, newContent, 'utf-8');
  });

  // 重新压缩文件夹
  crossZip.zip(`${targetDir}/**/*`, file);

  // 删除临时解压的文件夹
  fs.rmdirSync(targetDir, { recursive: true });
}

});
});


3. **运行脚本** 

node replace-path.js


运行脚本后,目标目录下的所有压缩包中的文件路径都会被替换成新的路径。

## 总结

本篇文章介绍了一个使用 Node 实现文件路径替换的工具。这个工具可以帮助你一键更新压缩包中文件路径。它支持递归遍历文件夹目录、正则替换目标内容、解压上传文件并返回更新后的压缩文件。