我是Node.js的新手,我正在寻找有关如何编译不同.md文件的指导。
我下载了this repository,并希望加入/合并/汇编所有.md
个文件。所以我想获得一个单独的文件,其中包含每个单独文件的内容,这样我就可以拥有一个包含所有内容的新.md文件。
这就是我在想的......
var docsdir = '../Docs/';
var filesArray = fs.readdir(docsdir, function(err,files){
if (err) console.error(err);
// missing how to check if file is a directory
return files;
}
var newFile;
for(var i = 0; i < files.length; i++){
fs.readFile(files[i], function read(err, data) {
if (err) {
throw err;
}
newFile = newFile + data;
});
}
fs.writeFile('wholeDocs', newFile)
目录结构在此示例中:
+
|-Docs
|
|-folder1
| |
| |-file1.md
|
|
|-folder2
| |
| |-file3.md
etc...
答案 0 :(得分:1)
这是离线处理,因此您可以使用fs.Sync()来完成比异步功能更容易的工作。
请注意,如果您编写Web应用程序,则必须使用async,异步帮助可以避免应用程序阻止。
您还需要知道递归。
您可以从以下代码中学习:
var fs = require('fs'), path = require('path');
function findAllFile(dir, ext) {
var ret = [];
function findOneLevel(dir) {
fs.readdirSync(dir).forEach(function(file) {
var name = path.join(dir, file);
var stat = fs.statSync(name);
if (stat.isDirectory()) {
findOneLevel(name);
} else if (stat.isFile() && path.extname(name).toLowerCase() === ext) {
ret.push(name);
}
});
}
findOneLevel(dir);
return ret;
}
function concatAllMd(dir, outFile) {
var contents = [];
findAllFile(dir, '.md').forEach(function(file) {
contents.push(fs.readFileSync(file, 'utf8'));
})
fs.writeFileSync(outFile, contents.join('\n'));
}
// use
concatAllMd('Docs', 'output.md');