让前端飞Web前端之路前端攻城狮

gulp构建项目

2018-01-26  本文已影响36人  一二三kkxx

1.前言

gulp是基于node环境上运行的,所以在构建项目前,要先安装node

打开cmd,输入 node -v ;如果显示版本号,则为安装成功

2. 安装

3.创建gulpfile.js文件

gulp需要一个文件作为主文件,所以需要创建一个js文件.

4.png

4.大致流程

先通过gulp.src()获取到我们想处理的文件,再通过pipe()方法,将文件流导入到gulp中去,经过gulp处理后再通过gulp.dest()方法重新写入到我们指定的位置中.

5.gulp API -- gulp.src()

gulp.src(globs[, options])

6. gulp API -- gulp.dest()

文件输出目录

7.gulp API -- gulp.task()

5.png

8.gulp API -- 自动编译gulp.watch()&browserSync

vue是自动编译,只要我们改动文件,保存之后,页面就会自动刷新,gulp也可以实现这一功能.

7.png

安装成功后,package.json中会增加一行代码.

8.png

8.我的配置

   var gulp = require('gulp'),
       browserSync = require("browser-sync").create(),//浏览器实时刷新 
       stylus = require('gulp-stylus'),  //处理stylus
       uglify = require('gulp-uglify'),  //压缩js
       rename = require('gulp-rename'),  //重命名
       minifyCss = require('gulp-minify-css'),//压缩CSS
       minifyHtml = require('gulp-minify-html'),//压缩html
       imagemin = require('gulp-imagemin'),//压缩图片
       pngquant = require('imagemin-pngquant'),//深度压缩图片
       concat = require("gulp-concat");//文件合并

  //处理html  
   gulp.task('html', function () {  
     var options = {  
         removeComments: true,//清除HTML注释  
         collapseWhitespace: true,//压缩HTML  
         removeScriptTypeAttributes: true,//删除<script>的type="text/javascript"  
         removeStyleLinkTypeAttributes: true,//删除<style>和<link>的type="text/css"  
         minifyJS: true,//压缩页面JS  
         minifyCSS: true//压缩页面CSS  
     };  
   gulp.src('./*.html')  
        .pipe(minifyHtml(options))  
        .pipe(gulp.dest('./build'))  
        // .pipe(browserSync.reload({stream:true}));  //重刷页面
   });  

   //处理css
   gulp.task('stylus',function(){
       return gulp.src('./static/css/*.styl')
               .pipe(stylus())
             .pipe(gulp.dest('./static/css'))
             .pipe(minifyCss())
             .pipe(gulp.dest('./build/static/css'))
             .pipe(browserSync.reload({stream:true}));  
   })

   // 压缩js
   gulp.task('script',function () {
       gulp.src('./static/js/*.js')
           .pipe(uglify())
           // .pipe(rename('*.min.js')) //重命名
           .pipe(gulp.dest('./build/static/js'))
   })

   // 压缩图片
   gulp.task('image',function () {
              gulp.src('./static/images/*')
                 .pipe(imagemin({
                     progressive:true, //无损压缩图片
                     svgoPlugins: [{removeViewBox: false}],  // 不移除svg的viewbox属性 
                     use:[pngquant()]  //使用pngquant深度压缩
                 }))
               .pipe(gulp.dest('./build/static/images'))
               .pipe(browserSync.reload({stream:true}));  
    })

   //自动编译
   gulp.task('watch',function(){
       gulp.start('stylus');  
       browserSync.init({
           file:['*.html','static/css/*css','static/js/*.js'],
           server:{
               baseDir:'./'
           }
       })
        gulp.watch('./*.html').on('change',browserSync.reload) //仅刷新页面
       // gulp.watch('./*.html', ['html'])    执行一次html任务
       gulp.watch('./static/css/*.styl',['stylus'])
       gulp.watch('./static/js/*.js').on('change',browserSync.reload)
   })

   // 打包
   gulp.task('build',['html','stylus','script','image'])

   //开发
   gulp.task('default',['stylus','watch'])
上一篇下一篇

猜你喜欢

热点阅读