Skip to content

Commit

Permalink
added -e, --etag argument to inject filenames + ?etag=hash to avoid u…
Browse files Browse the repository at this point in the history
…ndesired caching in new deployments
  • Loading branch information
juan-grau-wk committed Jul 4, 2017
1 parent 85fd3f2 commit 20a838a
Showing 1 changed file with 19 additions and 2 deletions.
21 changes: 19 additions & 2 deletions postbuild
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,24 @@ const path = require('path');
const glob = require('glob');
const replaceStream = require('replacestream');
const program = require('commander');
const crypto = require('crypto');

let cssFiles;
let jsFiles;
let revision;
let removeCondition;

function appendETagSHAToFilename(filename){
if (program.etag) {
let sha = crypto.createHash('sha');
let fContent = fs.readFileSync(filename).toString();
sha.update(fContent);
return `${filename}?etag=${sha.digest('hex').toString()}`;
} else {
return filename;
}
}

const replaceFunc = replacement => {
return function() {
return replacement === undefined ? arguments[0] : replacement;
Expand All @@ -38,6 +50,7 @@ program
.option('-r, --remove <remove>', 'Remove condition')
.option('-g, --ignore <path>', 'Prefix to remove from the injected filenames')
.option('-H, --hash', 'Inject git hash of current commit')
.option('-e, --etag', 'appends "?etag=fileHash" to every import (link, script) to avoid undesired caching in new deployments')
.parse(process.argv);

if(!program.input) {
Expand Down Expand Up @@ -68,19 +81,21 @@ if(program.js) {
if(glob.hasMagic(js)) {
jsFiles = glob.sync(js)
.map(file => removePrefix(file, program.ignore))
.map(file => appendETagSHAToFilename(file))
.map(file => `<script src="${file}"></script>`)
.join('\n');
}
else if(fs.lstatSync(js).isDirectory()) {
jsFiles = fs.readdirSync(js)
.filter(file => file.substr(-3) === '.js')
.map(file => removePrefix(`${js}/${file}`, program.ignore))
.map(file => appendETagSHAToFilename(file))
.map(file => `<script src="${file}"></script>`)
.join('\n');
}
else if(fs.lstatSync(js).isFile()) {
let file = removePrefix(js, program.ignore);
jsFiles = `<script src="${file}"></script>`;
jsFiles = `<script src="${appendETagSHAToFilename(file)}"></script>`;
}
}
catch(e) {
Expand All @@ -95,19 +110,21 @@ if(program.css) {
if(glob.hasMagic(css)) {
cssFiles = glob.sync(css)
.map(file => removePrefix(file, program.ignore))
.map(file => appendETagSHAToFilename(file))
.map(file => `<link rel="stylesheet" href="${file}">`)
.join('\n');
}
else if(fs.lstatSync(css).isDirectory()) {
cssFiles = fs.readdirSync(css)
.filter(file => file.substr(-4) === '.css')
.map(file => removePrefix(`${css}/${file}`, program.ignore))
.map(file => appendETagSHAToFilename(file))
.map(file => `<link rel="stylesheet" href="${file}">`)
.join('\n');
}
else if(fs.lstatSync(css).isFile()) {
let file = removePrefix(css, program.ignore);
cssFiles = `<link rel="stylesheet" href="${file}">`;
cssFiles = `<link rel="stylesheet" href="${appendETagSHAToFilename(file)}">`;
}
}
catch(e) {
Expand Down

0 comments on commit 20a838a

Please sign in to comment.