gul的配置问题之html怎么更换压缩后的js和css的地址

var gulp = require("gulp");
var localServer = require("gulp-connect");
var livereload = require("gulp-livereload");
var concat = require("gulp-concat");
var cssmin = require('gulp-minify-css');
var rename = require('gulp-rename');


var changed = require('gulp-changed');
var htmlmin = require('gulp-htmlmin');
var imagemin = require('gulp-imagemin');
var uglify = require('gulp-uglify');
var cleanCss = require('gulp-clean-css');
var cache = require('gulp-cached');
var rev = require('gulp-rev');
var replace = require('gulp-replace');
var del = require('del');

var revCollector = require('gulp-rev-collector');





gulp.task('clean',function () {
gulp.src('dist/*',{read:false})
.pipe(clean());
});

//*****************************************1.复制html task : copyHtml**************************************************************************

//对目标根目录进行变量
gulp.task('copyHtml', function(){
gulp.src('src/*.html') //当前目录的HTML文件
.pipe(cache('copyHtml')) //只对修改的文件进行复制
.pipe(changed("dist"))//只有变化的文件能够通过
.pipe(htmlmin({collapseWhitespace: true,
removeComments: true
})) //对html文件进行压缩处理,去换行,去注释
//.pipe(replace('a.js','main.js')) //对html文件中的指定的文字进行替换
.pipe(gulp.dest("dist")); //复制到目标文件
});

//*******************************************.复制css task:copyCss************************************************************************
gulp.task('copyCss',function(){
del(["dist/assets/styles/**.css"],{force: true}); // 由于每次更改css文件,进行hash的话旧的文件就会残留,因此每次写入前需要进行清空。
gulp.src('src/assets/styles/*.css')
// .pipe(changed(dir+'/css'))
//.pipe(concat('wap.min.css'))
.pipe(cleanCss({conpatibility: 'ie8'})) //进行压缩
.pipe(rev()) //进行hash
.pipe(gulp.dest("dist/assets/styles"))
.pipe(rev.manifest()) //产生hash对应的json文件
.pipe(gulp.dest("dist/assets/styles"));
});

//**************************************************4.复制js文件 task:copyJs*****************************************************************

gulp.task('copyJs', function(){
del(["dist/scripts/**/*"],{force: true}); //与css同理删除
gulp.src('src/scripts/**.js')
.pipe(cache('copyJs'))
//.pipe(concat('main.js')) //对js文件进行合并和重命名
.pipe(uglify()) //对合并后的文件进行压缩
.pipe(rev())
.pipe(gulp.dest("dist/scripts"))
.pipe(rev.manifest())
.pipe(gulp.dest("dist/scripts"));
});



//**************************************************复制图片 task:copyImgg*****************************************************************

gulp.task('copyImg',function () {
gulp.src('src/assets/img/**/*.*') //原图片的位置
.pipe(imagemin()) //执行图片压缩
.pipe(gulp.dest('dist/assets/img')); //压缩后的图片输出的位置
});
// *****************************************5.对html中的静态资源(css,js,image)进行hash后的文件引用替换**************************************************************************
gulp.task('rev',function(){
gulp.src(['dist/**/*.json', "src/*.html"]) //找到json,和目标html文件路径
.pipe(revCollector({
replaceReved: true
//dirReplacements: {
// 'a.js':'main.js'
//}//这里主要是对文件路径中的文字进行修改
})) //进行替换
.pipe(gulp.dest("dist"));
});



// *****************************************6.监视文件,并进行自动操作 task : watch代码如下**************************************************************************

gulp.task("server",function(){
return localServer.server({
root:"./dist",
livereload:true
})
})

gulp.task('watch',function(){
gulp.watch('*.html', ['copyHtml']); //监视html文件,如果发生变化就进行复制
gulp.watch('src/assets/main.css', ['copyCss']); //监视css文件,如果发生变化就进行复制
gulp.watch('src/assets/img/**/*.{jpg,png}',['copyImg']); //监视图片,如果发生变化就进行复制
gulp.watch('scripts/main.js', ['copyJs']); //监视js文件,如果发生变化就进行复制
gulp.watch("dist{/**/*.json,/*.html}", ['rev']) //监视json文件和html文件,如果发生变化就进行hash命名,和引用更改

});

// ***************************************7.设置默认任务 task : default代码如下****************************************************************************
gulp.task('default',['copyHtml','copyCss','copyImg','copyJs','watch',"server"]
);

// ****************************************************8.lastWorks 最后的任务代码如下***************************************************************
gulp.task('cleanCache', function(){
delete cache.caches['copyHtml','copyImg','copyJs'];
}) //由于cache不会自动清除缓存的东西,所以需要手动消除
gulp.task('lastWorks',['cleanCache'] );

// ***************************************9.其他任务——清除开发文件夹(dist)代码如下慎用****************************************************************************
gulp.task('clean', function(){
del(['../dist/**/*'],{force: true});
}); //清除dist中所有的文件和文件夹,适合新的项目开始时使用

// **********************************************10.新任务开始前的旧任务打包 task:packageProject代码如下*********************************************************************
gulp.task('packageProject',function(){
var zip = require('gulp-zip');
var fileName = 'projectNew_0.zip';
gulp.src(['../dist/**/*','!../dist/{css,js,img}/*.json']) //找到目标文件夹并且进行去除json文件处理
.pipe(zip(fileName)) //对文件进行压缩和重命名
.pipe(gulp.dest('../../projectNew')); //压缩到指定文件夹
});

posted @ 2017-03-16 09:05  huiziY  阅读(298)  评论(0)    收藏  举报