Only use file hashing in production

This commit is contained in:
Berkeley Martinez
2016-03-18 12:56:01 -07:00
parent 4e12c45057
commit c77fcedcbb
2 changed files with 22 additions and 34 deletions

View File

@ -370,16 +370,16 @@ gulp.task('less', function() {
) )
.pipe(gulp.dest(dest)) .pipe(gulp.dest(dest))
// add revision // add revision
.pipe(rev()) .pipe(__DEV__ ? gutil.noop() : rev())
// copy files to public // copy files to public
.pipe(gulp.dest(dest)) .pipe(__DEV__ ? gutil.noop() : gulp.dest(dest))
// create and merge manifest // create and merge manifest
.pipe(rev.manifest(manifestName)) .pipe(__DEV__ ? gutil.noop() : rev.manifest(manifestName))
.pipe(delRev( .pipe(__DEV__ ? gutil.noop() : delRev(
dest, dest,
manifestName manifestName
)) ))
.pipe(gulp.dest(paths.manifest)); .pipe(__DEV__ ? gutil.noop() : gulp.dest(paths.manifest));
}); });
function getFilesGlob(files) { function getFilesGlob(files) {
@ -428,17 +428,17 @@ gulp.task('js', function() {
return jsFiles return jsFiles
.pipe(gulp.dest(dest)) .pipe(gulp.dest(dest))
// create registry file // create registry file
.pipe(rev()) .pipe(__DEV__ ? gutil.noop() : rev())
// copy revisioned assets to dest // copy revisioned assets to dest
.pipe(gulp.dest(dest)) .pipe(__DEV__ ? gutil.noop() : gulp.dest(dest))
// create manifest file // create manifest file
.pipe(rev.manifest(manifestName)) .pipe(__DEV__ ? gutil.noop() : rev.manifest(manifestName))
.pipe(delRev( .pipe(__DEV__ ? gutil.noop() : delRev(
dest, dest,
manifestName manifestName
)) ))
// copy manifest file to dest // copy manifest file to dest
.pipe(gulp.dest(paths.manifest)); .pipe(__DEV__ ? gutil.noop() : gulp.dest(paths.manifest));
}); });
// commonFramework depend on iFrameScripts // commonFramework depend on iFrameScripts
@ -462,16 +462,16 @@ gulp.task('dependents', ['js'], function() {
gutil.noop() gutil.noop()
) )
.pipe(__DEV__ ? gutil.noop() : uglify()) .pipe(__DEV__ ? gutil.noop() : uglify())
.pipe(revReplace({ manifest: manifest })) .pipe(__DEV__ ? gutil.noop() : revReplace({ manifest: manifest }))
.pipe(gulp.dest(dest)) .pipe(gulp.dest(dest))
.pipe(rev()) .pipe(__DEV__ ? gutil.noop() : rev())
.pipe(gulp.dest(dest)) .pipe(__DEV__ ? gutil.noop() : gulp.dest(dest))
.pipe(rev.manifest(manifestName)) .pipe(__DEV__ ? gutil.noop() : rev.manifest(manifestName))
.pipe(delRev( .pipe(__DEV__ ? gutil.noop() : delRev(
dest, dest,
manifestName manifestName
)) ))
.pipe(gulp.dest(paths.manifest)); .pipe(__DEV__ ? gutil.noop() : gulp.dest(paths.manifest));
}); });
function collector(file, memo) { function collector(file, memo) {

View File

@ -1,31 +1,19 @@
import manifest from '../rev-manifest.json'; import manifest from '../rev-manifest.json';
const __DEV__ = process.env.NODE_ENV === 'development'; const __DEV__ = process.env.NODE_ENV === 'development';
const manifestPath = '../rev-manifest.json';
export default function({ globalPrepend = '' } = {}) { export default function({ globalPrepend = '' } = {}) {
function rev(manifest, scopedPrepend, asset) { function rev(scopedPrepend, asset) {
if (__DEV__) {
// do not use revision in dev mode
return `${globalPrepend}${scopedPrepend}/${asset}`;
}
return `${globalPrepend}${scopedPrepend}/${ manifest[asset] || asset }`; return `${globalPrepend}${scopedPrepend}/${ manifest[asset] || asset }`;
} }
const boundRev = rev.bind(null, manifest);
return function(req, res, next) { return function(req, res, next) {
// in dev environment, we reread the manifest on every call res.locals.rev = rev;
// this means we do not need to restart server on every change to
// client code
if (__DEV__) {
// we first need to remove the manifest from require cache
delete require.cache[require.resolve(manifestPath)];
// and re-require
const manifest = require(manifestPath);
res.locals.rev = rev.bind(null, manifest);
return next();
}
// in production we take use the initially loaded manifest
// since this should not change in production
res.locals.rev = boundRev;
return next(); return next();
}; };
} }