我想从文件夹及其子文件夹中读取文件名,并希望创建新文件mainfest.JSON
,其中将列出所有文件名。
这是要求
**Input:**
\Temp\file1.txt
\Temp\file2.log
\Temp\subTemp\file3.txt
\Temp\subTemp\file4.txt
**Output**
Mainefest.json
[
“file1.txt” : “\Temp\file1.txt”,
“file2.log” : “\Temp\file2.log”,
“file3.txt” : “\Temp\ subTemp \file1.txt”,
“file4.txt” : “\Temp\ subTemp \file1.txt”
]
下面是我的示例代码
gulp.task('TestApp', function(){
return gulp.src('./Temp/**/*.*')
.pipe(
hash({
algorithm: 'md5',
hashLength: 20
})) // Add hashes to the files' names
.pipe(gulp.dest('./Output')) // Write the renamed files
.pipe(hash.manifest('mainfest.json', {
deleteOld: true,
sourceDir: __dirname + './output'
})) // Switch to the manifest file
});
效果很好。但这会添加我不想要的哈希。
我被允许使用javascript,gulp,node js。 有谁可以帮助我实现这一目标。 谢谢。
答案 0 :(得分:0)
类似的东西应该可以正常工作:
const path=require('path'),
fs=require('fs');
class Parser{
constructor(dir,out){
this.dir=dir;
this.out=out;
}
parse(){
const res=[];
this._parse(this.dir,res);
fs.writeFileSync(this.out,JSON.stringify(res));
}
_parse(dir,result){
for(const entry of fs.readdirSync(dir)){
if(fs.lstatSync(path.join(dir,entry)).isDirectory()){
this._parse(path.join(dir,entry),result);
}else{
const e={};
e[entry]=path.join(dir,entry)
result.push(e)
}
}
}
}
module.exports=Parser;
您可以像这样使用它:
const parser=require('path/to/file/contains/class'),
Parser=new parser('dir/to/read','path/to/output/file.json');
Parser.parse();