有时候我们需要递归读取某个目录下的指导后缀文件。(目录保护子目录)
const path = require('path')
const fs = require('fs')
var walk = function(dir) {
var results = []
var list = fs.readdirSync(dir)
list.forEach(function(file) {
// 排除static静态目录(可按你需求进行新增)
if (file === 'static') {
return false
}
file = dir + '/' + file
var stat = fs.statSync(file)
if (stat && stat.isDirectory()) {
results = results.concat(walk(file))
} else {
// 过滤后缀名(可按你需求进行新增)
if (path.extname(file) === '.html') {
results.push(path.resolve(__dirname, file))
}
}
})
return results
}
function dealScri(arr) {
arr.forEach(filepath => {
var fileStr = fs.readFileSync(filepath, 'utf-8')
// fileStr = fileStr.replace(/[\n]|[\r]/g, "")
// fileStr = fileStr.replace(/(\<head\>.*?)(\<script.*?\<\/script\>){1,}(.*\<\/head\>)/g, '$1$3')
fs.writeFileSync(filepath, fileStr)
})
}
console.log('执行seo打包后的head')
dealScri(walk('./dist'))
walk 函数就是通过递归取目录,最终返回符合条件的数组数据
dealScri 是处理文件流的