Josiah / gulp-cachebust

Generates checksums and renames references to files, useful for cachebusting
30 stars 11 forks source link

references duplicate file with the same #19

Closed unbug closed 8 years ago

unbug commented 8 years ago

I dist a file to same dir,everytime it change,the file will has a new file.but other file include this file,got duplicate file from the references.

resources the file here.

var cachebust = new $.cachebust();
gulp.task('dist:libjs', function () {
  return gulp.src(['./static/app/src/lib/all.js'])
    .pipe($.fileInclude({
      basepath: './static/app/src/lib/'
    }))
    .pipe($.cached('build-cache', {
      optimizeMemory: true
    }))
    .pipe(cachebust.references())
    .pipe($.uglify())
    .pipe(cachebust.resources())
    .pipe(gulp.dest('./src/lib/'));
});

references the file here

gulp.task('manifest', function (cb) {
  var resources = ['src/lib/all.js'];
  gulp.src(['./resources/**/*.*'])
    .pipe(through2.obj(function (file, enc, next) {
      this.push(file.path.replace(__dirname+'/',''));
      next();
    }))
    .on('data', function (data) {
      resources.push(data)
    })
    .on('end', function () {
      resources = resources.join('\n');
      gulp.src(['./static/app/cache.manifest'])
        .pipe($.replace(/_BUILD_VERSION_/g, buildVersion))
        .pipe($.replace(/_FILES_/g, resources))
        .pipe(cachebust.references())
        .pipe(gulp.dest('./'))
        .on('end', function () {
          cb();
        });
    });
});

the result

CACHE MANIFEST
# Build: 20160128091500

CACHE:
resources/fonts/Dressedless_Three.svg
resources/fonts/Dressedless_Three.ttf
resources/fonts/FontAwesome.otf
resources/fonts/fontawesome-webfont.eot
resources/fonts/fontawesome-webfont.svg
resources/fonts/fontawesome-webfont.ttf
resources/fonts/fontawesome-webfont.woff
resources/fonts/fontawesome-webfont.woff2
resources/images/codelf_logo.png
resources/images/paypal.png
resources/images/twohardtings.jpg
resources/images/wechatpay.jpg
resources/images/zhifubao.png
src/lib/all.10759ba8.js
src/lib/all.43b6740a.js
src/lib/all.672a024a.js
src/lib/all.76dac1b2.js
src/lib/all.7f03792e.js
src/lib/all.980839dc.js
src/lib/all.c8a41475.js
src/lib/all.e40a7e60.js
src/lib/all.ef6edcbb.js
src/lib/all.f851782e.js

NETWORK:
*

the all.xxx.js files are duplicate,this not happend everytime,any suggestions? my whole gulpfile


require('date-utils');
var gulp = require('gulp');
var through2 = require('through2');
var $ = require('gulp-load-plugins')();
var runSequence = require('run-sequence');
var browserSync = require('browser-sync');//http://www.browsersync.io/docs/gulp/
var reload = browserSync.reload;
var cachebust = new $.cachebust();
var webpack = require("webpack");

//build version:
//script version
//style version
//manifest version
var startTime = 0;
var buildVersion = 0;
gulp.task('build_version', function (cb) {
  var startDate = new Date();
  startTime = startDate.getTime();
  buildVersion = startDate.toFormat('YYYYMMDDHHMISS');

  cb();
});

//watching script change to start default task
gulp.task('watch', function () {
  return gulp.watch([
    './static/app/**/*.*','!./static/app/src/AppBundle.js'
  ], function (event) {
    console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
    runSequence('compile');
  });

});
//clear dist folder
gulp.task('clean:dist', function (cb) {
  cb();
  //
  //return gulp.src(['./src/lib/*.js'])
  //  .pipe($.clean({force: true}))
});

gulp.task('dist:libjs', function () {
  return gulp.src(['./static/app/src/lib/all.js'])
    .pipe($.fileInclude({
      basepath: './static/app/src/lib/'
    }))
    .pipe($.cached('build-cache', {
      optimizeMemory: true
    }))
    .pipe(cachebust.references())
    .pipe($.uglify())
    .pipe(cachebust.resources())
    .pipe(gulp.dest('./src/lib/'));
});
gulp.task("dist:appjs", function(callback) {
  // run webpack
  webpack({
    entry: "./static/app/src/App.js",
    output: {
      path: __dirname + "/static/app/src",
      filename: "AppBundle.js"
    }
  }, function(err, stats) {
    if(err) throw new $.util.PluginError("webpack", err);
    $.util.log("[webpack]", stats.toString({
      // output options
    }));
    callback();
  });
});
gulp.task('dist:html', function () {
  return gulp.src(['./static/app/*.html'])
    .pipe($.fileInclude({
      basepath: './static/app/'
    }))
    .pipe(cachebust.references())
    .pipe($.htmlmin({
      collapseWhitespace: true,
      removeComments: true,
      minifyJS: true,
      minifyCSS: true
    }))
    .pipe(gulp.dest('./'));
});
//generate cache.manifest
gulp.task('manifest', function (cb) {
  var resources = ['src/lib/all.js'];
  gulp.src(['./resources/**/*.*'])
    .pipe(through2.obj(function (file, enc, next) {
      this.push(file.path.replace(__dirname+'/',''));
      next();
    }))
    .on('data', function (data) {
      resources.push(data)
    })
    .on('end', function () {
      resources = resources.join('\n');
      console.log(resources);
      gulp.src(['./static/app/cache.manifest'])
        .pipe($.replace(/_BUILD_VERSION_/g, buildVersion))
        .pipe($.replace(/_FILES_/g, resources))
        .pipe(cachebust.references())
        .pipe(gulp.dest('./'))
        .on('end', function () {
          cb();
        });
    });
});

//browser-sync serve
gulp.task('serve', function () {
  browserSync({
    "open": false,
    server:{
      dir: './'
    }
  });

  gulp.watch(['./*.html'], reload);
});

//print after tasks all done
gulp.task('_endlog', function (cb) {
  var endDate = new Date();
  var logs = [];
  logs.push('\nBuild version is ' + buildVersion);
  logs.push(', Completed in ' + ((endDate.getTime() - startTime) / 1000) + 's at ' + endDate + '\n');
  console.log(logs.join(''));
  cb();
});

gulp.task('prepare', function (cb) {
  runSequence('build_version', cb);
});
gulp.task('compile', function (cb) {
  runSequence('prepare', 'dist:libjs', 'dist:appjs', 'dist:html', 'manifest', cb);
});
gulp.task('default', function (cb) {
  runSequence('clean:dist', 'compile', 'watch', 'serve', cb);
});
Josiah commented 8 years ago

@unbug it looks like you've got a build-up of old cache busted files. You need to add a gulp task to delete these old files before you generate new ones.