让前端飞简友广场程序员

【前端工具】gulp构建工具的基本使用

2019-03-22  本文已影响71人  hijackli
gulp

gulp是什么?

那我们一起来用gulp构建一个简单的项目吧

提前操作:创建项目基本结构

基本目录结构

第一步:安装gulp

第二步:在项目根目录下创建一个名为gulpfile.js文件

  //gulpfile.js
  
  var gulp = require('gulp');
  
  gulp.task('default', function() {
      //将你的默认的任务操作代码放在这里
  })
  //gulpfile.js
  
  var gulp = require('gulp');
  
  gulp.task("html", function () {}) //创建html操作任务。"html"只是名称,可以任意取
  gulp.task("css", function () {})  //创建css操作任务
  gulp.task("js", function () {})   //创建js操作任务
  
  //创建默认执行任务,执行内容是 html操作任务、css操作任务、js操作任务
  gulp.task('default', ["html","css","js"]) 

第三步:运行gulp

    $ gulp

第四步:创建几个基本任务

//gulpfile.js

    //加载gulp模块
    var gulp = require('gulp');

    // 创建html任务
    gulp.task("html", function () {
    
    })
    // 创建css任务
    gulp.task("css", function () {
    
    })
    // 创建js任务
    gulp.task("js", function () {
        
    })
    // 创建image任务
    gulp.task("image", function () {
        
    })

    //创建默认任务,默认任务正好是创建的html任务,运行gulp会自动执行默认任务
    gulp.task("default", ["html", "css", "js", "image"]);

第五步:给各个任务添加具体操作:获取文件-->输出文件

    //路径管理 以便后续文件路径更改操作
    var folder = {
        src: "src/",
        dist: "dist/"   //生产环境的目录,如果没有创建gulp操作会自动创建dist文件目录
    }
    // 创建html任务
    gulp.task("html", function () {
        gulp.src(folder.src + "html/*")             //获取html文件
            .pipe(gulp.dest(folder.dist + "html/")) //输出文件 
    })
    // 创建css任务
    gulp.task("css", function () {
        gulp.src(folder.src + "css/*")              //获取less文件
            .pipe(gulp.dest(folder.dist + "css/"))  //输出文件
    })
    // 创建js任务
    gulp.task("js", function () {
       gulp.src(folder.src + "js/*")                //获取js文件 
            pipe(gulp.dest(folder.dist + "js/"))    //输出文件
    })
    // 创建image任务
    gulp.task("image", function () {
        gulp.src(folder.src + "image/*")             //获取图片
            .pipe(gulp.dest(folder.dist + "image/")) //输出文件
    })

第六步:给各个任务添加具体操作:压缩文件,转换less,添加css前缀,去除js调试语句

    $ npm install gulp-htmlclean    
    $ npm install gulp-imagemin
    $ npm install gulp-uglify
    $ npm install gulp-strip-debug
    $ npm install gulp-less
    $ npm install gulp-postcss autoprefixer
    $ npm install gulp-strip-debug
// 添加如下代码
// 压缩html
// 下载插件 gulp-htmlclean
var htmlClean = require('gulp-htmlclean');   //取到插件

// 压缩图片
// 下载插件 gulp-imagemin
var imageMin = require('gulp-imagemin');

// 压缩js
// 下载插件 gulp-uglify
var uglify = require('gulp-uglify');

// 去掉js中的调试语句
// 下载插件 gulp-strip-debug
var debug = require('gulp-strip-debug');

// 压缩css 
// 下载插件 gulp-clean-css
var cleanCss = require('gulp-clean-css')

// 给css添加前缀
// 下载插件 gulp-postcss  autoprefixer
var postcss = require('gulp-postcss')
var autoprefixer = require('autoprefixer')

// less转css
// 下载插件 gulp-less
var less = require('gulp-less');

    //更新之前的代码
    // 创建html任务
    gulp.task("html", function () {
        gulp.src(folder.src + "html/*")             //获取html文件
            .pipe(htmlClean())                      //压缩文件
            .pipe(gulp.dest(folder.dist + "html/")) //输出文件
    })
    // 创建css任务
    gulp.task("css", function () {
       gulp.src(folder.src + "css/*")               //获取less文件
            .pipe(less())                           //less转css
            .pipe(postcss([autoprefixer()]));       //添加前缀
            .pipe(cleanCss())                       //压缩css
            .pipe(gulp.dest(folder.dist + "css/"))  //输出文件
    })
    // 创建js任务
    gulp.task("js", function () {
        gulp.src(folder.src + "js/*")               //获取js文件 
            .pipe(debug())                          //清除调试语句
            .pipe(uglify())                         //压缩js文件
            .pipe(gulp.dest(folder.dist + "js/"))   //输出文件
    })
    // 创建image任务
    gulp.task("image", function () {
        gulp.src(folder.src + "image/*")            //获取图片
            .pipe(imageMin())                       //执行压缩插件
            .pipe(gulp.dest(folder.dist + "image/"))//输出文件
    })

第七步:开启服务器代理和自动监听文件变化并刷新页面

    $ npm install gulp-connect
    // 开启服务器
    // 下载插件 gulp-connect
    var connect = require('gulp-connect')
    //开启服务器任务
    gulp.task('server', function () {
        connect.server({
            port: "8888",           // 设置端口号,不设置默认8080
            livereload: true        //开启刷新,什么时候刷新呢?需要在各个任务函数中设置
        });
    })
    gulp.task("default", ["html", "css", "js", "image", "server"]); //默认任务中也要添加服务器任务
    // 创建监听任务
    gulp.task('watch', function () {
        gulp.watch(folder.src + 'html/*', ['html'])  //监听html文件,一旦文件变化就执行html任务
        gulp.watch(folder.src + 'css/*', ['css'])    //监听css文件
        gulp.watch(folder.src + 'js/*', ['js'])      //监听js文件
    })
    gulp.task("default", ["html", "css", "js", "image", "server", "watch"]); //默认任务中也要添加监听任务
    //更新之前的代码
    gulp.task("html", function () {
        gulp.src(folder.src + "html/*") 
            .pipe(connect.reload());             //每次文件改变刷新页面
            .pipe(htmlClean())                   //压缩文件
            .pipe(gulp.dest(folder.dist + "html/"))  
    })

第八步:针对不同环境进行操作

   $ export NODE_ENV=development    # 同样的,生产环境是production
    var devMode = process.env.NODE_ENV == "development"; //判断环境变量
    //更新之前的代码
    gulp.task("html", function () {
        var page = gulp.src(folder.src + "html/*")  
                        .pipe(connect.reload());     //每次文件改变刷新页面
        if (!devMode) {                              //如果是生产环境
            page.pipe(htmlClean())                   //压缩文件
        }
        page.pipe(gulp.dest(folder.dist + "html/"))  
    })
上一篇下一篇

猜你喜欢

热点阅读