之前一段时间学习使用了gulp自动化构建工具,并在现在使用的项目上部署使用,同时在这做个笔记进行小结,以便加深记忆,如有理解错误的地方请不吝赐教

    gulp 的解释我就不多说了 这里引用官网的一句话    Gulp.js 是一个自动化构建工具,开发者可以使用它在项目开发过程中自动执行常见任务,提高开发效率

    在这我多使用gulp进行JS压缩,css压缩,同时其还能自动化地完成 javascript/coffee/sass/less/html/image/css 等文件的的测试、检查、合并、压缩、格式化、浏览器自动刷新、部署文件生成,并监听文件在改动后重复指定的这些步骤,下面我就不多说了直接上手如何使用gulp

    1.首先当然是要安装一个node,gulp是具于node的所以这是最基础的一步

    你可以去node官网下载一个版本node安装,链接http://nodejs.cn/(这里我使用的node均在window系统下);

    2.使用命令行进行gulp安装下载,

    1).这里就稍微记录下node下常用的一点命令行

        node -v查看安装的nodejs版本,出现版本号,说明刚刚已正确安装nodejs。

        npm -v查看npm的版本号,npm nodejs的包管理器,用于node插件管理(包括安装、卸载、管理依赖等)。

        cd定位到目录,用法:cd + 路径 ;

        dir列出文件列表;

        cls清空命令提示符窗口内容。

        

      2)安装gulp

        2.1.首先全局安装gulp,目的通过其执行gulp任务,安装命令为:(npm install gulp -g),查看是否安装成功(gulp -v)出现版本号即为成功;

        2.2.新建一个package.json文件,当然你也可以使用(npm init)来创建一个package.json文件。

          下面以手动创建为例

  1. {
  2. "name": "test", //项目名称(必须)
  3. "version": "1.0.0", //项目版本(必须)
  4. "description": "This is for study gulp project !", //项目描述(必须)
  5. "homepage": "", //项目主页
  6. "repository": { //项目资源库
  7. "type": "git",
  8. "url": "https://git.oschina.net/xxxx"
  9. },
  10. "author": { //项目作者信息
  11. "name": "xxx",
  12. "email": "xxx@qq.com"
  13. },
  14. "license": "ISC", //项目许可协议
  15. "devDependencies": { //项目依赖的插件
  16. "gulp": "^3.8.11",
  17. "gulp-less": "^3.0.0"
  18. }
  19. }
  1.  

        2.3.在使用的目录下安装gulp(npm install --save-dev gulp),

        2.4.在项目的根目录新建一个gulpfile.js文件

  1. var gulp = require('gulp');
  2. gulp.task('gulps', () => {
  3. return //需要执行的代码
  4. });
  5.  
  6. 然后在cmd中使用 gulp gulps 执行

      3.一些api解释

  1. var gulp = require('gulp');
  2. var cleanCSS = require('gulp-clean-css');
  3. var minJs = require('gulp-uglify');
  4. var rev = require('gulp-rev') ;
  5. var rename = require('gulp-rename');//重名名
  6.  
  7. 示例压缩css,
  8. /*task 定义一个gulp任务,含三个个参数,
  9. 第一个参数为任务名,必填;
  10. 第二个参数为依赖的任务,选填,
  11. 第三个为回调函数里面执行的是必要的插件操作,必填
  12. src 为指定文件路径,可使用正则匹配
  13. dest 指定输出位置,
  14. */
  15. gulp.task('total-css', () => {
  16. return gulp.src('Public/static/css/home/newKdBeiFen/*.css')
  17. .pipe(rename({suffix:'.min'}))
  18. .pipe(cleanCSS({ compatibility: 'ie8' }))
  19. .pipe(gulp.dest('Public/static/css/home/monicss/'));
  20. });
  21. /*watch用于监听文件发生变化,文件发生改变就会执行该处指定的任务*/
  22. gulp.task('watch',function(){
  23. gulp.watch('Public/static/css/home/newKdBeiFen/*.css',['total-css']);
  24. })

  3.下面记录的均为gulp 的常用插件安装   以下使用均为(npm install 插件名 --save-dev

      gulp-load-plugins :自动加载 package.json 中的 gulp 插件,避免一个个require插

      gulp-rename: 重命名

      gulp-uglify:文件压缩

      gulp-concat:文件合并

      gulp-less:编译 less

      gulp-clean-css:压缩 CSS 文件

      gulp-htmlmin:压缩 HTML 文件

      gulp-babel: 使用 babel 编译 JS 文件

      gulp-jshint:jshint 检查

      gulp-rev:添加时间戳

      gulp-rev-collector:替换html中的link,srcipt

      gulp-run-sequence:同步执行

      gulp-imagemin:压缩jpg、png、gif等图片

      gulp-rev-append:使用查询字符串文件哈希缓存文件的gulp插件

      gulp-livereload:当代码变化时,它可以帮我们自动刷新页面,除在模块中需要安装外,还需要在浏览器中安装。

  使用示参考

    

  1. 下面方法来自百度的参考感谢大佬的分享,
    像我这项目一般缓存都为几年所以我们需要加入?xxx清除缓存,以css文件为例
    /引入gulpgulp插件
  2. var gulp = require('gulp'),
  3. runSequence = require('run-sequence'),
  4. rev = require('gulp-rev'),
  5. revCollector = require('gulp-rev-collector');//CSS生成文件hash编码并生成 rev-manifest.json文件名对照映射
  6. gulp.task('revCss', function(){
  7. return gulp.src('Public/static/css/home/newKdBeiFen/*.css')
    .pipe(rev())
  8. .pipe(rev.manifest())
  9. .pipe(gulp.dest('Public/static/css/home/monicss/'));
    });//Html替换css文件版本
  10. gulp.task('revHtml', function () {
  11. return gulp.src(['rev/**/*.json', 'View/*.html'])
  12. .pipe(revCollector())
  13. .pipe(gulp.dest('View'));
  14. });
  15.  
  16. //按顺序执行
  17. gulp.task('dev', function (done) {
  18. condition = false;
  19. runSequence(
  20. ['revCss'],
  21. ['revHtml'],
  22. done);
  23. });
  24.  
  25. gulp.task('default', ['dev']); //在cmd 执行gulp default
  26.  
  27. 此时我们生成的并不是我们所需的样子,需要再去源文件处修改一些代码
  28.  
  29. 打开node_modules\gulp-rev\index.js
  30. 144 manifest[originalFile] = revisionedFile;
  31. 更新为: manifest[originalFile] = originalFile + '?v=' + file.revHash;
  32.  
  33. 打开nodemodules\gulp-rev\nodemodules\rev-path\index.js
  34. 10 return filename +'-'+ hash + ext;
  35. 更新为: return filename + ext;
  36.  
  37. 打开node_modules\gulp-rev-collector\index.js
  38. 31if ( !_.isString(json[key]) || path.basename(json[key]).replace(new RegExp( opts.revSuffix ), '' ) !== path.basename(key) ) {
  39. 更新为: if ( !_.isString(json[key]) || path.basename(json[key]).split('?')[0] !== path.basename(key) ) {
  40.  
  41. 打开node_modules\gulp-rev-collector\index.js
  42. 107 regexp: new RegExp( '([\/\\\\\'"])' + pattern, 'g' ),
  43. 更新为: regexp: new RegExp( '([\/\\\\\'"])' + pattern+'(\\?v=\\w{10})?', 'g' ),
  44.  
  45. 生成 <linkrel="stylesheet"href="../css/default.css?v=5a636d79c4">

    <script src="../js/app.js?v=3a0d844594"></script>

  2.还一种添加哈希值清除缓存的方式

  1. html部分 需要在尾部添加?rev=@@hash 在执行后就会将@@hash替换成哈希值
  2. <!doctype html>
  3. <html>
  4. <head>
  5. <link rel="stylesheet" type="text/css" href="style/style-one.css?rev=@@hash">
  6. <script src="script/script-one.js?rev=@@hash"></script>
  7. <script src="script/script-two.js"></script>
  8. </head>
  9. <body>
  10. <div><p>hello, world!</p></div>
  11. <script src="script/script-three.js?rev=@@hash"></script>
  12. </body>
  13. </html>
  14.  
  15. 配置部分
  16. var rev = require('gulp-rev-append');
  17.  
  18. gulp.task('rev', function() {
  19. gulp.src('./index.html')
  20. .pipe(rev())
  21. .pipe(gulp.dest('.'));
  22. });

      

        

        

    

初识gulp的更多相关文章

  1. gulp 学习笔记 (初识)

    根据极客学院入门视频整理 一.gulp介绍,主要提到了gulp是基于流式来管理运行的,目前完全搞不懂这一套专业术语. 二.gulp的安装使用. 1.首先需要在全局环境下安装gulp npm insta ...

  2. 自动化构建工具--gulp的初识和使用

    gulp 首先:什么是gulp? gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成:使用她,我 ...

  3. 解读ASP.NET 5 & MVC6系列(2):初识项目

    初识项目 打开VS2015,创建Web项目,选择ASP.NET Web Application,在弹出的窗口里选择ASP.NET 5 Website模板创建项目,图示如下: 我们可以看到,此时Web ...

  4. 初识node.js(通过npm下载项目依赖的包的过程)

    一.初识node.js 简单的说Node.js 就是运行在服务器端的JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一个事 ...

  5. 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)

    通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 ja ...

  6. 常用 Gulp 插件汇总 —— 基于 Gulp 的前端集成解决方案(三)

    前两篇文章讨论了 Gulp 的安装部署及基本概念,借助于 Gulp 强大的 插件生态 可以完成很多常见的和不常见的任务.本文主要汇总常用的 Gulp 插件及其基本使用,需要读者对 Gulp 有一个基本 ...

  7. 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一)

    相关连接导航 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二) 常用 Gulp 插件汇总 ...

  8. 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二)

    前言 文章 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 中,已经完成对 gulp 的安装,由于是window环境,文中特意提到了可以通过安装 gitbash 来代替 ...

  9. gulp详细入门教程

    本文链接:http://www.ydcss.com/archives/18 gulp详细入门教程 简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优 ...

随机推荐

  1. params must be [a-zA-Z0-9] for verification sms

    阿里短信发送短信时返回这个信息,之前是可以发送的,现在阿里应该是做了限制的.如果你的短信模板类型为“验证码”,发送的短信内容只能是包含字母和数字 所以当你的短信内容包含特殊符号和中文时,请把短信模板类 ...

  2. 关于调试php的socket服务端中遇到的问题及解决办法

    今天终于把socket的服务端解决了,期间遇到了很多问题呢~ 1.用cmd运行php的问题: 2.socket_create()函数未定义问题: 3.查看端口的问题. 以下逐一说说解决办法: 1.在c ...

  3. Step By Step Hibernate Tutorial Using eclipse WTP[z]

     [shivasoft.in/blog/sql/myqsl/step-by-step-hibernate-tutorial-using-eclipse-wtp/] Hibernate is the O ...

  4. XAMPP非本地访问被拒绝解决办法

    问题场景: 本机搭建一个apache服务器,正常访问XAMPP目录下的页面. 手机接入同一wifi,以电脑ip方式访问该目录下的页面:提示:Access Denied Access to the re ...

  5. PHP实现一维数组转二维数组的方法

    具体实现方法如下: <?php $asr[1] = array("a","b","c","d"); $asr[2] ...

  6. git 查询某人的提交记录

    git log --author=liubo --name-only

  7. 交互原型画得丑?29个优秀UI/UX线框草图

    现在越来越多UI设计师都需要画一些交互的线框图,然而作为视觉专家,当然要把它画得靓靓的嘛,是不是?所以很多用户会使用<5款高效的原型设计工具>来绘制,或者直接手绘更有逼格. 今天达人手工整 ...

  8. 【转】Defunct进程 僵尸进程

    在测试基于 DirectFB+Gstreamer 的视频联播系统的一个 Demo 的时候,其中大量使用 system 调用的语句,例如在 menu 代码中的 system("./play&q ...

  9. cannot be cast to

    java.lang.ClassCastException: com.service.impl.OrderPlanServiceImpl cannot be cast to com.provider.s ...

  10. linux相关文章链接

    薄荷开元网 http://www.mintos.org/