Needlessly Postulating Minds

    catw

    1.0.1 • Public • Published

    catw

    concatenate file globs, watching for changes

    This module is just like the cat command, but with watching!

    build status

    example

    #!/usr/bin/env node
     
    var catw = require('catw');
    var fs = require('fs');
     
    catw('*.txt', function (stream) {
        var w = stream.pipe(fs.createWriteStream('/tmp/bundle.txt'));
        w.on('close', function () { console.log('wrote to /tmp/bundle.txt') });
    });

    If we run the program in a directory with files a.txt and b.txt, the bundle.txt output will be both files concatenated together (in string-order by filename):

    beep
    boop
    

    If we edit a.txt to be "BEEP" instead of "beep", the bundle.txt is now:

    BEEP
    boop
    

    and then if we add a third file c.txt with the contents "!!!", the output is now:

    BEEP
    boop
    !!!
    

    We can even delete files. If we delete b.txt, the output is now:

    BEEP
    !!!
    

    If we add a new file called bloop.txt with contents "BLOOP", the bundle.txt output is now:

    BEEP
    BLOOP
    !!!
    

    because the glob expansions of directories are sorted before concatenating.

    usage

    There is a command-line catw command that ships with this package.

    usage: catw {OPTIONS} [FILES...] -o OUTFILE
    
      If FILES is "-", read from stdin.
      If there is no OUTFILE, write to stdout and exit without watching.
    
      OPTIONS:
    
        -w, --watch      Watch for changes.
                         Default: true except when writing to stdout.
     
        -c, --command    Execute a transform command for file before concatenating.
                         The env var $FILE will be set for each file path.
     
        -t, --transform  Transform each file using a module.
    
        -v, --verbose    Print the number of bytes written whenever a file changes.
    
        -h, --help       Print this help message.
    
    Make sure to escape the globs that you want `catw` to watch so your shell won't
    expand them.
    

    methods

    var catw = require('catw')

    var cat = catw(patterns, opts={}, cb)

    Create a new cat to concatenate patterns, an array of strings or a single string and watch each of the patterns for changes: new files, deleted files, and file updates.

    It opts.watch is false, don't watch for changes, only concatenate once.

    You can pass in a opts.transform(file) function that returns a transform stream to modify file contents before the contents are written to the bundle.

    If specified, cb(stream) sets up a listener on the 'stream' event.

    cat.close()

    Stop listening for updates to the patterns.

    events

    cat.on('stream', function (stream) {})

    Each time a file matched by a pattern changes or there is a new or deleted file matched by a pattern, this event fires with a stream that will output the concatenated file contents.

    install

    To get the module, with npm do:

    npm install catw
    

    and to get the catw command do:

    npm install -g catw
    

    test

    With npm do:

    npm test
    

    license

    MIT

    Install

    npm i catw

    DownloadsWeekly Downloads

    374

    Version

    1.0.1

    License

    MIT

    Last publish

    Collaborators

    • substack
    • k88hudson