Gulp(自动化构建工具 )

简介: 前言 Gulp,简而言之,就是前端自动化开发工具,利用它,我们可以提高开发效率。 比如:   1、  压缩js   2、  压缩css   3、  压缩less   4、  压缩图片   等等… 我们完全可以利用Gulp来自动化地完成这些重复性很强的工作。

前言

Gulp,简而言之,就是前端自动化开发工具,利用它,我们可以提高开发效率。

比如:

  1、  压缩js

  2、  压缩css

  3、  压缩less

  4、  压缩图片

  等等…

我们完全可以利用Gulp来自动化地完成这些重复性很强的工作。

Gulp可以帮助我们 用自动化构建工具增强你的工作流程!

好了,废话不多说了。既然要了解Gulp,就得先安装它。Gulp是基于node来实现的,so你得先有个node环境

优势:

node环境有了后,安装Gulp就很easy咯

入门指南

1. 全局安装 gulp:

$ npm install --global gulp  (后面加-g代表全局)

安装完成后,输入gulp –v查看是否安装成功。

如下:

 

但,就算你这么安装了全局gulp,你每次到项目中时,还得在相应目录下安装gulp。

原因就是,gulp就这么设置的,避免发生版本冲突

所以这步安装gulp可以可无,不过就当初步了解它嘛

2. 作为项目的开发依赖(devDependencies)安装:

$ npm install --save-dev gulp

3. 在项目根目录下创建一个名为 gulpfile.js 的文件:

var gulp = require('gulp');

gulp.task('default', function() { // 将你的默认的任务代码放在这 }); 

4. 运行 gulp:

$ gulp

默认的名为 default 的任务(task)将会被运行,在这里,这个任务并未做任何事情。

想要单独执行特定的任务(task),请输入 gulp <task> <othertask>

说明:gulpfile.js是gulp项目的配置文件,是位于项目根目录的普通js文件(其实将gulpfile.js放入其他文件夹下亦可)

//导入工具包 require('node_modules里对应模块')
var gulp = require('gulp'), //本地安装gulp所用到的地方
    less = require('gulp-less');
 
//定义一个testLess任务(自定义任务名称)
gulp.task('testLess', function () {
    gulp.src('src/less/index.less') //该任务针对的文件
        .pipe(less()) //该任务调用的模块
        .pipe(gulp.dest('src/css')); //将会在src/css下生成index.css
});
 
gulp.task('default',['testLess', 'elseTask']); //定义默认任务 elseTask为其他任务,该示例没有定义elseTask任务
 
//gulp.task(name[, deps], fn) 定义任务  name:任务名称 deps:依赖任务名称 fn:回调函数
//gulp.src(globs[, options]) 执行任务处理的文件  globs:处理的文件路径(字符串或者字符串数组)
//gulp.dest(path[, options]) 处理完后文件生成路径

 

完整版Gulpfile处理js/css文件:

"use strict";

var gulp = require("gulp"),//引入Gulp依赖
    concat = require("gulp-concat"),
    cssmin = require("gulp-cssmin"),
    htmlmin = require("gulp-htmlmin"),
    uglify = require("gulp-uglify"),
    merge = require("merge-stream"),
    del = require("del"),
    bundleconfig = require("./bundleconfig.json"),
    less = require("gulp-less"),
    path = require("path"),
    gulpSequence = require("gulp-sequence");

//正则匹配表达式
var regex = {
    css: /\.css$/,
    html: /\.(html|htm)$/,
    js: /\.js$/,
    less: /\.less$/
};

//任务
gulp.task("min", gulpSequence("less", ["min:js", "min:css", "min:html"]));

gulp.task('less', function () {
    return gulp.src('./Layout/Less/*.less')
        .pipe(less())
        .pipe(gulp.dest('./wwwroot/css'));
});

gulp.task("min:js", function () {
    var tasks = getBundles(regex.js).map(function (bundle) {
        return gulp.src(bundle.inputFiles, { base: "." })
            .pipe(concat(bundle.outputFileName))
            .pipe(uglify())
            .pipe(gulp.dest("."));
    });
    return merge(tasks);
});

gulp.task("min:css", function () {
    var tasks = getBundles(regex.css).map(function (bundle) {
        return gulp.src(bundle.inputFiles, { base: "." })
            .pipe(concat(bundle.outputFileName))
            .pipe(cssmin())
            .pipe(gulp.dest("."));
    });
    return merge(tasks);
});

gulp.task("min:html", function () {
    var tasks = getBundles(regex.html).map(function (bundle) {
        return gulp.src(bundle.inputFiles, { base: "." })
            .pipe(concat(bundle.outputFileName))
            .pipe(htmlmin({ collapseWhitespace: true, minifyCSS: true, minifyJS: true }))
            .pipe(gulp.dest("."));
    });
    return merge(tasks);
});

gulp.task("clean", function () {
    var files = bundleconfig.map(function (bundle) {
        return bundle.outputFileName;
    });

    return del(files);
});

gulp.task("watch", function () {
    gulp.watch('./Layout/Less/*.less', ['less']);

    getBundles(regex.js).forEach(function (bundle) {
        gulp.watch(bundle.inputFiles, ["min:js"]);
    });

    getBundles(regex.css).forEach(function (bundle) {
        gulp.watch(bundle.inputFiles, ["min:css"]);
    });

    getBundles(regex.html).forEach(function (bundle) {
        gulp.watch(bundle.inputFiles, ["min:html"]);
    });
});

function getBundles(regexPattern) {
    return bundleconfig.filter(function (bundle) {
        return regexPattern.test(bundle.outputFileName);
    });
}

然后执行

然后再文件夹中可查看到,把所有的css、js自动压缩到了min里面。

 

此致,gulp构建 算是初步完成,后面还有很多可以优化的地方,具体可以参考: Gulp API文档

我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。

  • 感谢你的阅读。如果你觉得这篇文章对你有帮助或者有启发,就请推荐一下吧~你的精神支持是博主强大的写作动力。欢迎转载!
  • 博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高(其实是个菜B),不足和错误之处在所难免,希望大家能够批评指出。
  • 欢迎加入.NET 从入门到精通技术讨论群→523490820 期待你的加入
  • 不舍得打乱,就永远学不会复原。被人嘲笑的梦想,才更有实现的价值。
  • 我的博客:http://www.cnblogs.com/zhangxiaoyong/
目录
相关文章
|
1月前
|
JavaScript 前端开发 搜索推荐
Gulp:构建自动化与任务管理的强大工具
【10月更文挑战第13天】Gulp:构建自动化与任务管理的强大工具
70 0
|
缓存 JavaScript 前端开发
gulp安装教程(简单的前端自动化教程)
gulp安装教程(简单的前端自动化教程)
266 0
|
前端开发 JavaScript 程序员
【万字长文】通过grunt、gulp和fit,彻底搞懂前端的自动化构建(三)
【万字长文】通过grunt、gulp和fit,彻底搞懂前端的自动化构建
115 0
|
前端开发 JavaScript API
【万字长文】通过grunt、gulp和fit,彻底搞懂前端的自动化构建(二)
【万字长文】通过grunt、gulp和fit,彻底搞懂前端的自动化构建
237 0
|
移动开发 资源调度 前端开发
【万字长文】通过grunt、gulp和fit,彻底搞懂前端的自动化构建(一)
【万字长文】通过grunt、gulp和fit,彻底搞懂前端的自动化构建
140 0
|
JavaScript 前端开发 开发工具
从0搭建Vue3组件库:使用gulp自动化处理打包与发布
从0搭建Vue3组件库:使用gulp自动化处理打包与发布
578 0
|
缓存 资源调度 前端开发
说一说自动化构建以及Gulp
自动化构建是前端工程化当中的一个重要组成部分,自动化就是使用机器来代替人工来完成一些工作,构建我们可以将其理解为转换。总的来说就是将我们的源代码自动转换为生产环境当中可以运行的代码或程序。一般来说我们
153 0
说一说自动化构建以及Gulp
|
监控 前端开发 JavaScript
Gulp前端自动化构建工具的应用
实际前端开发不再仅仅是静态页面的开发了,丰富的前端技术让前端的代码逻辑越来越复杂, 模块化开发和各类框架也增加了在生产环境中部署开发环境代码的难度,这种情况下,前端自动化构建在前端开发中尤为重要。 我们会遇到下面的问题: a. 每次修改了HTML、JS、CSS等文件,都需要手动刷新浏览器,能不能修改了让浏览器自动刷新呢 ? b. 在发布项目的时候,需要将前端资源进行合并、压缩,尽量减少http请求,手动去完成合并压缩不仅繁琐,还容易出错,有什么技术可以自动地执行这些操作,解放我们的双手呢?
137 0
Gulp前端自动化构建工具的应用
|
Web App开发 设计模式 缓存
前端自动化构建之Gulp
本篇文章的核心是介绍一款强大的任务流工具Gulp,之所以题目叫做“前端自动化构建之Gulp”,是因为Gulp本身是使用JS编写的运行在Node环境的一个npm包,并且大部分开发者也都使用它来作为前端项目的自动化构建工具。不过,从本质上说,Gulp并非只能做前端自动化构建,后端构建发布自动化,脚本工具集自动化,测试流程自动化等都可以使用Gulp。所以,无论你是哪个技术栈的开发者,学习使用Gulp都会对你大有裨益。
151 0
|
JSON JavaScript 前端开发
【构建】gulp自动化构建工具入门教程
【构建】gulp自动化构建工具入门教程
150 0
【构建】gulp自动化构建工具入门教程