1.0.0 • Published 5 years ago

gulp-rev-time v1.0.0

Weekly downloads
-
License
ISC
Repository
-
Last release
5 years ago

This is a fork from vinothbabu/gulp-rev-timestamp. There was some updates that wasnt beeing applyed but I need them. Like work with multiple lines having rev=@hash.

Install

$ npm install --save gulp-rev-timestamp

Why another plugin?

This plugin is based on gulp-rev-append which is very good and in some cases even better, because it relies on file hash, so if file didn't change between versions, the hash will remain the same so file can stay in cache.

gulp-rev-timestamp provides you an option to either read your file and generate a hash out of it what rev-append does or just generate a hash(timestamp or revision) and replace the query string every time regardless of file being changed or not. This way regardless of file contents changes or not, you have a new query string every time appended to file. This is bit faster than the first option, as it does not require to read the contents of file every time and generate a hash based on it.

RegularExpression

var FILE_DECL = /(?:href=|src=|url\()['|"]([^\s>"']+?)\?rev=([^\s>"']+?)['|"]/gi;

Usage

We can use gulp-rev-timestamp to cache-bust several assets and generate timestamp or hash or revision.

var gulp = require('gulp');
var revts = require('gulp-rev-timestamp');

gulp.task('rev-timestamp', function() {
  gulp.src("index.html")
    .pipe(revts())
    .pipe(gulp.dest('.'))
});

Options

default

With no optional parameter sent, the strict mode would false, mode would be type of timestamp.

var gulp = require('gulp');
var revts = require('gulp-rev-timestamp');

gulp.task('rev-timestamp', function() {
  gulp.src("index.html")
    .pipe(revts({strict: true}))
    .pipe(gulp.dest('.'))
});

The above task would replace any

<!-- Minified Files -->
<script src="../path/config.min.js?rev=@@hash"></script>
<script src="../path/app.min.js?rev=@@hash"></script>
<script src="../path/serivices.min.js?rev=@@hash"></script>
<!-- Minified Files -->

to below with a hash of timestamp, regardless of file being changed or not:

<!-- Minified Files -->
<script src="../path/config.min.js?rev=1e7aa69df74343571bf4977b685cb496"></script>
<script src="../path/app.min.js?rev=1ed8a9d8c7aa5de44043ca86e9624248"></script>
<script src="../path/serivices.min.js?rev=341a3c405f3445e8a0d908ff1a4542ab"></script>
<!-- Minified Files -->

strict

Type : Boolean Default: false

You set a flag, strict, which will check if the file exist in relative path and also generate a hash and append to query string only if file content has changed. Default value is false.

var gulp = require('gulp');
var revts = require('gulp-rev-timestamp');

gulp.task('rev-timestamp', function() {
  gulp.src("index.html")
    .pipe(revts({strict: true}))
    .pipe(gulp.dest('.'))    
});

The above task would replace any

<!-- Minified Files -->
<script src="../path/config.min.js?rev=@@hash"></script>
<script src="../path/app.min.js?rev=@@hash"></script>
<script src="../path/serivices.min.js?rev=@@hash"></script>
<!-- Minified Files -->

to below with a hash of content of file only if the file content has changed:

<!-- Minified Files -->
<script src="../path/config.min.js?rev=51dc1baa4a2dac96097d56de62d860a3"></script>
<script src="../path/app.min.js?rev=7a5a2adc42842b0e2b317440cdc2957f"></script>
<script src="../path/serivices.min.js?rev=46abc154eb09e362ad9ae4f7e69868dc"></script>
<!-- Minified Files -->

mode

Type : String Default: timestamp

Specifies the type of hash you would like to append to your query string (timestamp or revision)

var gulp = require('gulp');
var revts = require('gulp-rev-timestamp');

gulp.task('rev-timestamp', function() {
  gulp.src("index.html")
    .pipe(revts({strict: false, mode: 'timestamp'}))
    .pipe(gulp.dest('.'))
});

When mode => revision

var gulp = require('gulp');
var revts = require('gulp-rev-timestamp');

gulp.task('rev-timestamp', function() {
  gulp.src("index.html")
    .pipe(revts({strict: false, mode: 'revision', revision: '55'}))
    .pipe(gulp.dest('.'))
});

The above task would replace any

<!-- Minified Files -->
<script src="../path/config.min.js?rev=@@hash"></script>
<script src="../path/app.min.js?rev=@@hash"></script>
<script src="../path/serivices.min.js?rev=@@hash"></script>
<!-- Minified Files -->

to below with a revision, preferrably coming from svn repo global version also does not check whether the contents of file has been changed or not:

<!-- Minified Files -->
<script src="../path/config.min.js?rev=55"></script>
<script src="../path/app.min.js?rev=55"></script>
<script src="../path/serivices.min.js?rev=55"></script>
<!-- Minified Files -->

License

MIT © Vinoth Babu