引言

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

  • 使用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. 在脚本中使用set命令调试脚本

    当脚本文件较长时,可以使用set命令指定调试一段脚本.在脚本中使用set -x命令开启调式模式:使用set +x命令关闭调式模式. 例如: #!/bin/bash #Scriptname: greet ...

  2. Sass--伪类嵌套

    其实伪类嵌套和属性嵌套非常类似,只不过他需要借助`&`符号一起配合使用. a { &:link, &:visited { color: blue; } &:hover ...

  3. Electron-vue实战(三)— 如何在Vuex中管理Mock数据

    Electron-vue实战(三)— 如何在Vuex中管理Mock数据 作者:狐狸家的鱼 本文链接:Vuex管理Mock数据 GitHub:sueRimn 在vuex中管理mock数据 关于vuex的 ...

  4. Mybatis基于XML配置SQL映射器(三)

    Mybatis之动态SQL mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类: if choo ...

  5. ARM 是什么

    ARM Advanced RISC Machines. RISC 就是reduced instruction set computer 精简指令集计算机DSP digtal signal Proces ...

  6. 线程类中使用spring注解报空指针异常

    springboot项目开发中,作为服务端,实现了线程类,在此类中添加spring注解@Source注入的service,报空指针异常. 查原因后,发现是线程中,不支持spring注解,因为sprin ...

  7. django 之模板层

    1. 模板语法之变量 格式:{{ 变量名 }} 句点符,深度查询(可以点到方法,不要加括号,只能是无参的方法) 代码 视图函数: from django.shortcuts import render ...

  8. The document cannot be opened. It has been renamed, deleted or moved.

    In the Individual components section of the Visual Studio Installer, make sure that Razor Language S ...

  9. alerttemplate 时间戳转换

    /*时间戳转换*/ template.defaults.imports.dateFmt = function(ns){ return new Date(parseInt(ns)).toLocaleSt ...

  10. Centos7防火墙使用

    修改时区 Centos7 #修改时区 timedatectl set-timezone Asia/Shanghai 开启防火墙 #添加一条规则 firewall-cmd --zone=public - ...