gulp 自定义插件统计 文件的行数
统计文件的行数,简单的方法就是统计换行符的个数,即使用String.split(‘\n’)分割后返回数组的长度。
let through = require('through2');
let gutil = require('gulp-util');
let fs =require('fs');
let pluginError = gutil.PluginError;
module.exports=function (prefixText) {
return through.obj(function (file,enc,cb) {
if (file.isNull()) {
cb(null, file);
}
if (file.isBuffer()) {
//处理Buffer
console.log(file.history[0])//file.history是个数组,存储的是文件的名字,file.contents是文件的内容
let dirState =fs.existsSync('./countLine');//判断目录是否存在
if(!dirState){
fs.mkdirSync('./countLine')//创建目录
}
let state = fs.existsSync('./countLine/fileInfo.txt')
let cData="";
if(state){
cData = fs.readFileSync('./countLine/fileInfo.txt')//同步读取统计文件内容
}
cData=cData.toString('utf-8')+file.history[0]+" "+file.contents.toString('utf8').split('\n').length+"\n"
fs.writeFileSync('./countLine/fileInfo.txt',cData)
// console.log(file.contents.toString('utf8'))
// console.log(file.contents.toString('utf8').split('\n').length)
// file.contents = Buffer.concat([prefixText, file.contents]);
}
if (file.isStream()) {
console.log('stream')
// file.contents = file.contents.pipe();
}
cb()//该方法很重要,传参时,会执行gulp的下一个pipe(),不传参终止当前流,如果传参,但没有下个pipe存在的话,会导致 传入该插件的数量不正确
})
}