node package manager


Build Status


map-replace is a command line tool that applies replacements described in a JSON map to files.

Installation: npm install -g map-replace

$ cat hello.txt
Hello, World! Hello, everyone! And hello, you!
$ cat map.json
$ map-replace hello.txt < map.json
$ cat hello.txt
Howdy, World. Howdy, everyone. And hello, you.
$ map-replace --help
  Usage: map-replace [options] <files>
    -h, --help           output usage information
    -V, --version        output the version number
    -m, --match <regex>  Only replace in substrings that match <regex>
    -f, --flags <flags>  Regex flags (g is implied)
Takes a map of search strings to replacements from stdin and applies that to each
provided file.

It was created as a companion to hash-filename, to update paths in static HTML and CSS files to their cache busted variants. hash-filename emits the JSON map.

$ map-replace --match "<[^>]+>" *.html < map.json
$ map-replace --match "url\([^)]+\)" *.css < map.json

The above only replaces inside HTML start tags (such as in attributes) and inside the url() function in CSS. (Of course those regexes are not bullet proof, but good enough. KISS.)