从github编译文件

Compile together files from github

本文关键字:文件 编译 github      更新时间:2023-09-26

我是Node.js的新手,我正在寻找如何将不同的.md文件编译在一起的指导。

我下载了这个存储库,并希望将所有.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...

这是离线处理,因此您可以使用fs。Sync()来做比异步函数更容易的工作。

请注意,如果您编写web应用程序,异步是必须的,异步有助于避免应用程序阻塞。

您还需要了解递归。

你可以从下面的代码中学习:

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');