2017-07-28 68 views
1

使用yeoman angular generator (1.4.x)的代碼庫進行操作。gulp-rev爲相同的代碼庫生成新文件名

gulp-rev正在使用中,即使對於相同的代碼庫,它也會生成一個新的文件(散列)名稱,我如何保留相同的文件散列?

下面是大廈它的主要任務(我想),

gulp.task('html', ['inject', 'partials'], function() { 
    var partialsInjectFile = gulp.src(path.join(conf.paths.tmp, '/partials/templateCacheHtml.js'), { read: false }); 
    var partialsInjectOptions = { 
    starttag: '<!-- inject:partials -->', 
    ignorePath: path.join(conf.paths.tmp, '/partials'), 
    addRootSlash: false 
    }; 

    var htmlFilter = $.filter('*.html', { restore: true }); 
    var jsFilter = $.filter('**/*.js', { restore: true }); 
    var cssFilter = $.filter('**/*.css', { restore: true }); 

    return gulp.src(path.join(conf.paths.tmp, '/serve/*.html')) 
    .pipe($.inject(partialsInjectFile, partialsInjectOptions)) 
    .pipe($.useref()) 
    .pipe(jsFilter) 
    .pipe($.sourcemaps.init()) 
    .pipe($.ngAnnotate()) 
    .pipe($.uglify({ preserveComments: $.uglifySaveLicense })).on('error', conf.errorHandler('Uglify')) 
    .pipe($.rev()) 
    .pipe($.sourcemaps.write('maps')) 
    .pipe(jsFilter.restore) 
    .pipe(cssFilter) 
    // .pipe($.sourcemaps.init()) 
    .pipe($.replace('../../bower_components/bootstrap-sass/assets/fonts/bootstrap/', '../fonts/')) 
    .pipe($.cssnano()) 
    .pipe($.rev()) 
    // .pipe($.sourcemaps.write('maps')) 
    .pipe(cssFilter.restore) 
    .pipe($.revReplace()) 
    .pipe(htmlFilter) 
    .pipe($.htmlmin({ 
     removeEmptyAttributes: true, 
     removeAttributeQuotes: true, 
     collapseBooleanAttributes: true, 
     collapseWhitespace: true 
    })) 
    .pipe(htmlFilter.restore) 
    .pipe(gulp.dest(path.join(conf.paths.dist, '/'))) 
    .pipe($.size({ title: path.join(conf.paths.dist, '/'), showFiles: true })); 
}); 

STYLES任務在gulp-

'use strict'; 

var path = require('path'); 
var gulp = require('gulp'); 
var conf = require('./conf'); 

var browserSync = require('browser-sync'); 

var $ = require('gulp-load-plugins')(); 

var wiredep = require('wiredep').stream; 
var _ = require('lodash'); 

gulp.task('styles-reload', ['styles'], function() { 
    return buildStyles() 
    .pipe(browserSync.stream()); 
}); 

gulp.task('styles', function() { 
    return buildStyles(); 
}); 

var buildStyles = function() { 
    var sassOptions = { 
    outputStyle: 'expanded', 
    precision: 10 
    }; 

    var injectFiles = gulp.src([ 
    path.join(conf.paths.src, '/app/**/*.scss'), 
    path.join('!' + conf.paths.src, '/app/app.scss') 
    ], { read: false }); 

    var injectOptions = { 
    transform: function(filePath) { 
     filePath = filePath.replace(conf.paths.src + '/app/', ''); 
     return '@import "' + filePath + '";'; 
    }, 
    starttag: '// injector', 
    endtag: '// endinjector', 
    addRootSlash: false 
    }; 


    return gulp.src([ 
    path.join(conf.paths.src, '/app/app.scss') 
    ]) 
    .pipe($.inject(injectFiles, injectOptions)) 
    .pipe(wiredep(_.extend({}, conf.wiredep))) 
    .pipe($.sourcemaps.init()) 
    .pipe($.sass(sassOptions)).on('error', conf.errorHandler('Sass')) 
    .pipe($.autoprefixer()).on('error', conf.errorHandler('Autoprefixer')) 
    .pipe($.sourcemaps.write()) 
    .pipe(gulp.dest(path.join(conf.paths.tmp, '/serve/app/'))); 
}; 

SCRIPTS TASK

'use strict'; 

var path = require('path'); 
var gulp = require('gulp'); 
var conf = require('./conf'); 

var browserSync = require('browser-sync'); 

var $ = require('gulp-load-plugins')(); 


gulp.task('scripts-reload', function() { 
    return buildScripts() 
    .pipe(browserSync.stream()); 
}); 

gulp.task('scripts', function() { 
    return buildScripts(); 
}); 

function buildScripts() { 
    return gulp.src(path.join(conf.paths.src, '/app/**/*.js')) 
    .pipe($.eslint()) 
    .pipe($.eslint.format()) 
    .pipe($.size()) 
}; 

Found this piece [R ev github頁面,但是, 我不擅長吞噬,所以不知道要改變什麼以及在這裏的任務。

回答

0

一飲而盡-REV的既定目的是要做到這一點:通過追加內容哈希文件名

靜態資產revisioning unicorn.css→麒麟d41d8cd98f.css

的想法是能夠緩存這些靜態文件,但仍然向用戶提供最新的代碼。如果你不想修改你的資產,你可以簡單地把它從你的管道中拿出來:

return gulp.src(path.join(conf.paths.tmp, '/serve/*.html')) 
.pipe($.inject(partialsInjectFile, partialsInjectOptions)) 
.pipe($.useref()) 
.pipe(jsFilter) 
.pipe($.sourcemaps.init()) 
.pipe($.ngAnnotate()) 
.pipe($.uglify({ preserveComments: $.uglifySaveLicense })).on('error', conf.errorHandler('Uglify')) 
.pipe($.sourcemaps.write('maps')) 
.pipe(jsFilter.restore) 
.pipe(cssFilter) 
// .pipe($.sourcemaps.init()) 
.pipe($.replace('../../bower_components/bootstrap-sass/assets/fonts/bootstrap/', '../fonts/')) 
.pipe($.cssnano()) 
// .pipe($.sourcemaps.write('maps')) 
.pipe(cssFilter.restore) 
.pipe(htmlFilter) 
.pipe($.htmlmin({ 
    removeEmptyAttributes: true, 
    removeAttributeQuotes: true, 
    collapseBooleanAttributes: true, 
    collapseWhitespace: true 
})) 
.pipe(htmlFilter.restore) 
.pipe(gulp.dest(path.join(conf.paths.dist, '/'))) 
.pipe($.size({ title: path.join(conf.paths.dist, '/'), showFiles: true 
})); 
+0

我同意,但這顯然是造成服務器緩存它的一些問題。 從我張貼的鏈接,我期待實現以下, '爲了避免產生新的哈希值不變的源文件,您可以: 排序流與一飲而盡排序 過濾不變的文件與一飲而盡,不變 瞭解更多關於增量版本的信息 –