一、簡介: node
很簡單,寫了一個node操做文件的小腳本,主要實現對目標文件夾中內容的複製。還順帶一個按照文件夾或者文件名過濾的功能。webpack
二、應用場景web
適合基於 node 環境的項目,項目打包的時候,配合 webpack 配置,生成須要的線上項目目錄,方便快捷。svg
三、 使用說明ui
代碼我檢驗過,應該是沒bug的,至於文件過濾,這裏只提供一個版本,具體需求你們能夠本身改代碼,很簡單就是過濾代碼位置放在哪的問題spa
四、參數及大體思路解析設計
function (srcPath, tarPath, filter = [])
srcPath: String 要複製的文件路徑
tarPath: String 複製後存放的文件路徑
filter: Array[String] 須要過濾的文件、文件夾名 ps: 注意,只按照名稱過濾,不一樣目錄同名文件不作區分
設計思路: 讀取 srcPath 目錄內容,先檢驗是否過濾。而後依次判斷類型,若是是文件直接複製到目標目錄,若是是文件夾,先再目標目錄建立同名文件夾,而後遞歸。
五、代碼code
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'])