引言

在工作中,经常会遇到要把文件合并和压缩等操作,我经历过下面的演进过程:

  • 使用ajaxmin工具手动合并和压缩
  • 使用Grunt合并和压缩
  • 使用Gulp合并和压缩

这里不探讨Grunt和Gulp的优劣(详细的对比 自己去看),看开发者自己的喜好吧。

正文

1. 安装NodeJS

目前(2015.09.28)的版本是 v4.1.1,前去现在 , 【网站能进去,下载可能不行,应该是被墙了,和谐社会,大侠们各显神通吧】,下载下来之后,直接安装就可以了。

2. 安装Gulp环境

如果直接使用命令安装Gulp会被墙掉,下载不下来,需要先修改默认镜像为国内镜像,具体步骤如下:

  1. 使用CMD命令进入node.js的node.exe所在目录,运行命令:

     npm config set registry http://registry.cnpmjs.org/
  2. 安装npm全局环境,运行命令:

     npm install gulp –g

3. 项目中使用Gulp

  1. 进入项目的适当位置(一般为根本目录或前端代码的最上层),运行安装本地Gulp环境,运行命令:

     npm install gulp --save-dev
  2. 安装css,js压缩的环境,运行命令:

     npm install gulp-minify-css gulp-uglify gulp-concat gulp-rename gulp-jshint del --save-dev
    
     /////////////////
    
     1.css压缩   gulp-minify-css
    2.js压缩   gulp-uglify
    3.js合并   gulp-concat 
    4.重命名   gulp-rename
    5.js代码检测  gulp-jshint (或gulp-jslint)
    6.文件删除 del
  3. 新建文件名为 gulpfile.js 文件,样本文件:

     var gulp = require('gulp'),
    minifycss = require('gulp-minify-css'),
    concat = require('gulp-concat'),
    uglify = require('gulp-uglify'),
    rename = require('gulp-rename'),
    del = require('del'); //压缩css
    gulp.task('minify_css',["clean"], function () {
    var cssSrc = ['./css/*.css']; return gulp.src(cssSrc) //压缩的文件
    .pipe(concat('all.css')) //合并所有css到all.css
    .pipe(gulp.dest('./main/css')) //输出文件夹
    .pipe(rename({suffix: '.min'}))
    .pipe(minifycss())
    .pipe(gulp.dest('./main/css')); //执行压缩
    }); //压缩js
    gulp.task('minify_js',["clean"], function() {
    var jsSrc = ['./lib/*.js','!./lib/*.src.js']; return gulp.src(jsSrc)
    .pipe(concat('all.js')) //合并所有js到all.js
    .pipe(gulp.dest('./lib')) //输出all.js到文件夹
    .pipe(rename({suffix: '.min'})) //rename压缩后的文件名
    .pipe(uglify()) //压缩
    .pipe(gulp.dest('./lib')); //输出
    }); //执行压缩前,先删除以前压缩的文件
    gulp.task('clean', function() {
    return del(['./css/all.css', './css/all.min.css', './lib/all.js', './lib/all.min.js'])
    }); // 默认任务
    gulp.task('default', function(){
    gulp.run('minify_css', 'minify_js');
    });
  4. 根据业务需求修改 gulpfile.js

  5. 直接运行gulp命令

  6. 检查压缩文件,是否正常

做技术就是这样,很多东西要先学会使用,再求深入了解,但不能只停留在会使用的阶段

项目实战-Gulp使用的更多相关文章

  1. Asp.Net Core 项目实战之权限管理系统(4) 依赖注入、仓储、服务的多项目分层实现

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  2. 给缺少Python项目实战经验的人

    我们在学习过程中最容易犯的一个错误就是:看的多动手的少,特别是对于一些项目的开发学习就更少了! 没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用 ...

  3. 【腾讯Bugly干货分享】React Native项目实战总结

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/577e16a7640ad7b4682c64a7 “8小时内拼工作,8小时外拼成长 ...

  4. Asp.Net Core 项目实战之权限管理系统(0) 无中生有

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  5. Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  6. Asp.Net Core 项目实战之权限管理系统(2) 功能及实体设计

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  7. Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  8. Asp.Net Core 项目实战之权限管理系统(5) 用户登录

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  9. Asp.Net Core 项目实战之权限管理系统(6) 功能管理

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

随机推荐

  1. js 数组、字符串、Json互相转换

    arr.join(): 数组转字符串 let arr = [1,2,3,4]; let str = arr.join(','); arr.split():字符串转数组 let str = '1,2,3 ...

  2. HashMap源码浅析

    HashMap源码主要一些属性 //默认的初始化容量(2的n次方) static final int default_inital_capacity = 16; //最大指定容量为2的30次方 sta ...

  3. 生成token

    利用中间件生成token 1.安装中间件 npm install jsonwebtoken 2. 使用 Sign() 里面有3个参数,第一个是token里面传递的数据    ,第二个是 key ,第三 ...

  4. pc上用C语言模拟51多任务的案例程序

    #include <stdio.h> #include <stdlib.h> //任务槽个数.在本例中并未考虑任务换入换出,所以实际运行的任务有多少个, //就定义多少个任务槽 ...

  5. kubernetes集群中移除Node

    例如要在集群中移出node2节点1)在master节点上执行: kubectl drain node2 --delete-local-data --force --ignore-daemonsets ...

  6. 后端优化(2)—— BA与图优化

  7. 尚学linux课程---12、vim操作命令2

    尚学linux课程---12.vim操作命令2 一.总结 一句话总结: 要看不同的视频,每个视频的关键点都不一样,不如之间的的视频就没讲到vim中set nu是什么意思 学了的内容一定要练,不然真的是 ...

  8. windows shell命令和快捷键

    // 这下面的宏,貌似都能通过shell:调用 // SHGetSpecialFolderLocation // // Caller should use SHGetMalloc to obtain ...

  9. c#网络通信框架networkcomms内核解析之六 处理接收到的二进制数据

    本文基于networkcomms2.3.1开源版本  gplv3协议 在networkcomms通信系统中,服务器端收到某连接上的数据后,数据会暂时存放在"数据包创建器"(Pack ...

  10. Jmeter beanshell断言 org.json.jar包下载

    链接:https://pan.baidu.com/s/1O01ODjlKyqmz2NyDT0MCww 提取码:a5va 欢迎关注微信公众号:软件测试汪,qq技术交流群:809111560