Overview
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.txtHello, World! Hello, everyone! And hello, you!$ cat map.json$ map-replace hello.txt < map.json$ cat hello.txtHowdy, World. Howdy, everyone. And hello, you.$ map-replace --help Usage: map-replace [options] <files> Options: -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 Takes a map of search strings to replacements from stdin and applies that to eachprovided 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.)