Giter Club home page Giter Club logo

Comments (1)

RC-Lee avatar RC-Lee commented on August 24, 2024

I've changed the code to piping streams, with a transform stream in between.

function createFile(filepath, extension){
    if(filepath.endsWith(extension)){
        let filename = path.basename(filepath, extension);

        const rs = fs.createReadStream(filepath);
        rs.setEncoding("utf8");
        rs.on("data", () =>{});
        rs.on("end", ()=>{});
        rs.on("error", (err) =>{
            console.error(`ReadStream encountered an error: ${err}`);
            process.exit(-1);
        });

        let ws = fs.createWriteStream(path.join(outputPath, filename.replace(/\s+/g, '_')+".html"));
        ws.on("finish", ()=>{});
        ws.on("error", (err) =>{
            console.error(`WriteStream encountered an error: ${err}`);
            ws.end();
            process.exit(-1);
        });

        const toHtmlStream = new Transform({
            objectMode: true,
            transform(chunk, encoding, callback){
                this.push(htmlContent(chunk.toString(), filename, extension));
                return callback();
            },
        });

        toHtmlStream.on('error', (err) =>{
            console.error(`toHtmlStream encountered an error: ${err}`);
            process.exit(-1);
        });

        //Piping data
        rs.pipe(toHtmlStream).pipe(ws);
    }
}

But, I am not entirely sure if this is the right way to handle errors and end streams.

from sitegen.

Related Issues (19)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.