1、簡介:
很簡單,寫了一個node操作文件的小腳本,主要實現對目標文件夾中內容的復制。還順帶一個按照文件夾或者文件名過濾的功能。
2、應用場景
適合基於 node 環境的項目,項目打包的時候,配合 webpack 配置,生成需要的線上項目目錄,方便快捷。
3、 使用說明
代碼我檢驗過,應該是沒bug的,至於文件過濾,這里只提供一個版本,具體需求大家可以自己改代碼,很簡單就是過濾代碼位置放在哪的問題
4、參數及大致思路解析
function (srcPath, tarPath, filter = [])
srcPath: String 要復制的文件路徑
tarPath: String 復制后存放的文件路徑
filter: Array[String] 需要過濾的文件、文件夾名 ps: 注意,只按照名稱過濾,不同目錄同名文件不做區分
設計思路: 讀取 srcPath 目錄內容,先檢驗是否過濾。然后依次判斷類型,如果是文件直接復制到目標目錄,如果是文件夾,先再目標目錄創建同名文件夾,然后遞歸。
5、代碼
const fs = require('fs'); const path = require('path'); const copyFile = function (srcPath, tarPath, filter = []) { fs.readdir(srcPath, function (err, files) { console.log(files) if (err === null) { files.forEach(function (filename) { let filedir = path.join(srcPath,filename); let filterFlag = filter.some(item => item === filename) if (!filterFlag) { fs.stat(filedir, function (errs, stats) { let isFile = stats.isFile() if (isFile) { // 復制文件
const destPath = path.join(tarPath,filename); fs.copyFile(filedir, destPath, (err) => { }) } else { // 創建文件夾
let tarFiledir = path.join(tarPath,filename); fs.mkdir(tarFiledir,(err) => { }); copyFile(filedir, tarFiledir, filter) // 遞歸
} }) } }) } else { if (err) console.error(err); } }) }
//使用 copyFile('./public', './public2', ['robots.txt', 'svg'])