您的位置:首页 > 博客中心 > 互联网 >

使用gulp打包普通项目

时间:2022-05-07 16:27

前言:

  在使用gulp打包工具之前,我做的H5项目在浏览器中的缓存是很严重的,若改了一点css,加了一句js代码,不手动清除浏览器缓存是看不到效果的。老总也在项目演示当中遇到这些问题,一查找原因却是缓存问题,于是老总多次要求得解决这个问题,不能每次遇到这个问题,你去叫客户清下缓存。于是我就在找解决问题的方法,一开始是想着如何可以动态的给引入的文件后面加上时间戳参数,试了一下貌似不行,就选择花时间去研究gulp打包工具了,这样既可以解决浏览器缓存的问题,也可提高代码的安全性!

环境安装:

  首先,安装node环境,配置环境变量可参考文章:https://www.jianshu.com/p/03a76b2e7e00

  其次,安装gulp,全局安装npm install gulp -g

在项目中使用gulp(我这里只说普通项目使用gulp):

  在项目的根目录下执行命令 npm init,创建package.json文件;

  其次:在项目根目录下安装gulp:npm install --save-dev gulp,gulp的版本信息会保存在package.json文件中,下载的gulp依赖包会在node_modules里面;

  安装好之后新建一个gulpfile.js的配置文件,这里编写打包执行的程序;

  我的项目目录是这样的:这里包括配置文件,依赖包,还有最后输出的文件目录

  技术图片

gulp配置文件:

  我这里根据我的目录来配置我的打包入口文件gulpfile.js,代码如下:  

  1 var gulp = require(‘gulp‘);
  2 var babel = require(‘gulp-babel‘);//把es6语法解析成es5
  3 var concat = require(‘gulp-concat‘);//合并
  4 var uglify = require(‘gulp-uglify‘);//压缩
  5 var rev = require(‘gulp-rev‘);//对文件名加MD5后缀
  6 var revCollector = require(‘gulp-rev-collector‘);//替换路径
  7 var htmlmin = require(‘gulp-htmlmin‘); //压缩html里面的js,css,去除空格
  8 var del = require(‘del‘);//删除文件
  9 
 10 
 11 
 12 
 13 //js压缩
 14 gulp.task(‘js‘,function(){
 15     return gulp.src(‘./js/*.js‘)
 16     .pipe(babel())
 17     .pipe(uglify())
 18     .pipe(rev())
 19     .pipe(gulp.dest(‘./build/js‘))
 20     .pipe(rev.manifest(‘rev-js-manifest.json‘))
 21     .pipe(gulp.dest(‘./build/js‘));
 22 });
 23 
 24 
 25 //css压缩
 26 var autoprefix = require(‘gulp-autoprefixer‘);//兼容处理
 27 var minifyCss = require(‘gulp-minify-css‘);//压缩
 28 gulp.task(‘style‘,function(){
 29     return gulp.src(‘./css/*.css‘)
 30         .pipe(autoprefix({
 31                 browsers: [‘last 2 versions‘],
 32                 cascade: false
 33             }))
 34         .pipe(minifyCss())
 35         .pipe(rev())
 36         .pipe(gulp.dest(‘./build/css‘))
 37         .pipe(rev.manifest(‘rev-css-manifest.json‘))
 38         .pipe(gulp.dest(‘./build/css‘));
 39 });
 40 
 41 //img
 42 gulp.task(‘images‘, function (){
 43     return gulp.src([‘./images/*.jpg‘,‘./images/*.png‘,‘./images/*.gif‘])  
 44         .pipe(rev())//文件名加MD5后缀
 45         .pipe(gulp.dest(‘./build/images‘)) 
 46         .pipe(rev.manifest(‘rev-images-manifest.json‘))//生成一个rev-manifest.json
 47         .pipe(gulp.dest(‘./build/images‘));//将 rev-manifest.json 保存到 rev 目录内
 48 });
 49 
 50 //html压缩
 51 // gulp.task(‘revHtml‘,function(){
 52 //     var options = {
 53 //         removeComments: true,//清除HTML注释
 54 //         collapseWhitespace: true,//压缩HTML
 55 //         collapseBooleanAttributes: true,//省略布尔属性的值  ==> 
 56 //         removeEmptyAttributes: true,//删除所有空格作属性值  ==> 
 57 //         removeScriptTypeAttributes: true,//删除