gulp 使用介绍

gulp 使用介绍

  • gulp
  • gulp 插件
  • gulp的配置文件gulpfile.js
  • gulp 语法
  • gulp 实例
  • gulp的缺点

gulp

gulp是基于Node.js的前端自动化构建工具,主要用于代码打包。目前主流的前端打包工具,grunt,gulp,webpack。grunt现在似乎慢慢被gulp取代,而我使用gulp也是冲着大家说的配置简单去的,至于通道流,运行文件什么的其实还是次要的;webpack现在很火,听说功能强大,没有用过。

npm install gulp -g

注意需要在npm全局中安装gulp,否则命令窗口中找不到gulp快捷命令,记得检查环境变量的配置情况。

gulp 插件

gulp的使用离不开gulp插件的使用,下面是常用的几款。

npm install del gulp gulp-concat gulp-minify-css gulp-replace gulp-uglify gulp-rev gulp-rev-collector --save-dev
  • del 和 gulp-clean

    del是node.js的插件,两者的效果相似,都是用来清除文件。至于为什么使用 del,而不是 gulp-clean,我是看到网上一篇文章推荐的。

  • gulp-concat

    gulp-concat用来做文件合并,可以将多个文件合并成一个文件,减少静态资源数量。

  • gulp-minify-css

    gulp-minify-css是css的压缩工具。

  • gulp-uglify

    gulp-uglify是js的压缩工具。官方文档上是这么写的 “Minify files with UglifyJS.”

  • gulp-replace

    gulp-replace是一个文本修改插件,我们一般用来做文件内容的的修改,常用的是路径修改。

  • gulp-rev和gulp-rev-collector

    gulp-rev和gulp-rev-collector,并没有用到,这里只做标示。这两个插件可以用来处理文件名,同时生成一个json文件保存修改前的文件名和修改后的文件名,并且自动处理文件中的修改,例如图片文件至于css文件。

gulp的配置文件gulpfile.js

gulp依赖于配置文件gulpfile.js,在运行目录下需要手动创建gulpfile.js,gulp的任务执行代码会调用gulpfile.js。

gulp 语法

gulp的语法很简单,功能实现依赖于各种插件,所以学习上成本很低。gulp的语法其实就是是nodejs的语法。

  • 声明依赖的插件
var gulp = require(‘gulp‘);
var minifycss = require(‘gulp-minify-css‘);
var concat = require(‘gulp-concat‘);
var uglify = require(‘gulp-uglify‘);
var del = require(‘del‘);
var replace = require(‘gulp-replace‘);
  • 定义任务(task)
gulp.task(‘taskName‘, function() {

});

//default是默认task,当命令行缺省调用时会执行default任务。
gulp.task(‘default‘, []);
  • 命令行调用任务(task)
gulp taskName // 直接调用具体的task
gulp    //调用默认的default,如果没用会报错
  • 多个任务合并

    gulp.task(‘default‘, [‘task1‘, ‘task2‘, ‘task3‘, ‘task4‘]);
  • 文件拷贝语法
    gulp.src(‘oldPath/images/*.*‘)
      .pipe(gulp.dest(newPath+‘/images‘));
  • 文件合并且压缩语法
    //css文件
    gulp.src([‘app/assets/styles/style.css‘,
              ‘app/assets/styles/public.css‘,
              ‘app/assets/styles/page.css‘,
              ‘app/assets/styles/jquery-ui-1.10.3.css‘])
      .pipe(concat(‘style.css‘))
      .pipe(minifycss())
      .pipe(gulp.dest(newPath));
    //js文件
    gulp.src([
          ‘app/components/*/*.js‘
      ])
      .pipe(concat(‘components.js‘))
      .pipe(uglify())
      .pipe(gulp.dest(newPath));
  • 文本修改
    gulp.task(‘demo-replace‘, function(){
      gulp.src(demoDir+‘/index.html‘)
        .pipe(replace(‘<link rel="stylesheet">‘, ‘‘))  //删除
        .pipe(replace(/\.\.\/assets\//g, ‘‘))                //正则替换
        .pipe(replace(/\.\.\/images/g, ‘images‘))
        .pipe(gulp.dest(newPath));
  • 目录清理
    gulp.task(‘clean‘, function(cb){
      del(rootPath, cb);
    });

gulp 实例

var gulp = require(‘gulp‘);
var minifycss = require(‘gulp-minify-css‘);
var concat = require(‘gulp-concat‘);
var uglify = require(‘gulp-uglify‘);
var del = require(‘del‘);
var replace = require(‘gulp-replace‘);

var root = ‘dist‘;
var partnerDir = root + ‘/partners‘;

gulp.task(‘partners‘, function() {
    gulp.src(‘app/assets/images/*.*‘)
        .pipe(gulp.dest(partnerDir+‘/images‘));
    gulp.src([‘app/assets/styles/style.css‘,
              ‘app/assets/styles/public.css‘,
              ‘app/assets/styles/page.css‘,
              ‘app/assets/styles/jquery-ui-1.10.3.css‘])
        .pipe(concat(‘style.css‘))
        .pipe(minifycss())
        .pipe(gulp.dest(partnerDir));

    gulp.src([‘app/assets/js/jquery-1.11.1.min.js‘,
            ‘app/assets/js/jquery-ui-1.10.3.js‘,
            ‘app/assets/js/bootstrap.js‘,
            ‘app/assets/js/echarts.js‘])
        .pipe(uglify())
        .pipe(gulp.dest(partnerDir+‘/js‘));
    gulp.src(‘app/partners/modules/*/*.html‘)
        .pipe(gulp.dest(partnerDir+‘/modules‘));

    gulp.src([
        ‘app/bower_components/angular/angular.js‘,
        ‘app/bower_components/angular-ui-router/release/angular-ui-router.min.js‘,
        ‘app/bower_components/angular-resource/angular-resource.js‘,
        ‘app/bower_components/angular-cookies/angular-cookies.js‘,
        ‘app/bower_components/angular-messages/angular-messages.min.js‘
        ])
        .pipe(uglify())
        .pipe(gulp.dest(partnerDir+‘/bower_components‘));

    gulp.src([
            ‘app/components/services/*.js‘,
            ‘app/components/directives/*.js‘
        ])
        .pipe(concat(‘components.js‘))
        .pipe(uglify())
        .pipe(gulp.dest(partnerDir));

    gulp.src([‘app/partners/modules/*/*.js‘,
        .pipe(concat(‘modules.js‘))
        .pipe(uglify())
        .pipe(gulp.dest(partnerDir));

    gulp.src(‘app/partners/*.js‘)
        .pipe(uglify())
        .pipe(gulp.dest(partnerDir))
    gulp.src(‘app/partners/*.html‘)
        .pipe(gulp.dest(partnerDir))
});

gulp.task(‘partners-replace‘, function(){
    gulp.src(partnerDir+‘/index.html‘)
        //styles
        .pipe(replace(‘<link rel="stylesheet" href="../assets/styles/public.css">‘, ‘‘))
        .pipe(replace(‘<link rel="stylesheet" href="../assets/styles/jquery-ui-1.10.3.css">‘, ‘‘))
        .pipe(replace(‘<link rel="stylesheet" href="../assets/styles/style.css">‘, ‘<link rel="stylesheet" href="style.css">‘))
        //bower_components
        .pipe(replace(‘<script src="../bower_components/angular/angular.js"></script>‘,
                                    ‘<script src="bower_components/angular.js"></script>‘))
        .pipe(replace(‘<script src="../bower_components/angular-ui-router/release/angular-ui-router.min.js"></script>‘,
                                    ‘<script src="bower_components/angular-ui-router.min.js"></script>‘))
        .pipe(replace(‘<script src="../bower_components/angular-resource/angular-resource.js"></script>‘,
                                    ‘<script src="bower_components/angular-resource.js"></script>‘))
        .pipe(replace(‘<script src="../bower_components/angular-cookies/angular-cookies.js"></script>‘,
                                    ‘<script src="bower_components/angular-cookies.js"></script>‘))
        .pipe(replace(‘<script src="../bower_components/angular-messages/angular-messages.min.js"></script>‘,
                                    ‘<script src="bower_components/angular-messages.min.js"></script>‘))
        //components
        .pipe(replace(‘...‘, ‘<script src="components.js"></script>‘))
        //modules
        .pipe(replace(‘...‘, ‘<script src="modules.js"></script>‘))    

        .pipe(gulp.dest(partnerDir)); 

  gulp.src(partnerDir+‘/*.*‘)
      .pipe(replace(/\.\.\/assets\//g, ‘‘))
      .pipe(replace(/\.\.\/images/g, ‘images‘))
      .pipe(gulp.dest(partnerDir)); 

  gulp.src(partnerDir+‘/modules/*/*.html‘, { base: ‘modules‘ })
      .pipe(replace(/\.\.\/assets\//g, ‘‘))
      .pipe(replace(/\.\.\/images/g, ‘images‘))
      .pipe(gulp.dest(‘modules‘)); 

})

gulp.task(‘clean‘, function(cb){
    del(root, cb);
});

gulp.task(‘replace‘,[ ‘partners-replace‘]);

gulp.task(‘default‘, [ ‘partners‘]);

gulp的缺点

  • 问题很难定位,运行中间没有办法debug,console.log() 也不能很好的定位问题。
  • task串行执行有问题。
时间: 2024-08-21 18:46:30

gulp 使用介绍的相关文章

Gulp简单介绍

Gulp 介绍 自动化构建工具,可以通过gulp对我们的代码进行全自动的编译.可以实现代码的自动压缩.编译.实时监测等功能. 特点 任务化 基于流(数据流io:input/output)操作 整个操作都是基于数据流进行操作 具备属于gulp的内存,所有的操作全部在gulp的内存当中 对应着输入流和输出流.会将数据通过src方法输入,通过dest方法输出. 简易的API 官网网站:https://gulpjs.com/ 中文网:https://www.gulpjs.com.cn/ 插件中心:htt

自动化构建工具gulp简单介绍及使用

一.简介及安装: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成:使用她,我们不仅可以很愉快的编写代码,而且大大提高我们的工作效率 gulp的优点:基于流的操作.任务化. 常用api:src .dest.watch.task.pipe 由于gulp是基于node的所以使用的时候需要通过npm或者cnpm安装全局安装(cnpm i -g gulp) 常用的gulp需要安装的包括gulp-cl

gulp的介绍和手动安装

gulp, 前端自动化工具, 文件操作, 项目上线之前,将碎片文件合并,将ES6转成ES5,文件压缩,快速搭建服务器... gulp基于node环境 gulp就是node的一个非内置的小模块 gulp操作文件的原理:文件流 前端自动化工具:gulp,webpack,grunt,browserify 使用: 非内置,表示,node默认没有,需要手动下载 node的模块,使用node环境下载,node提供了一种下载方式:npm工具 npm工具怎么用? npm install 工具名 下载 npm u

gulp进阶构建项目由浅入深

阅读目录 gulp基本安装和使用 gulp API介绍 Gulp.src(globs[,options]) gulp.dest(path[,options]) gulp.task(name[,deps],fn); gulp.watch(glob[,opts],tasks) gulp一些常用插件 gulp-rename(重命名) gulp-uglify(JS压缩) gulp-minify-css(css文件压缩) gulp-minify-html(html压缩) gulp-concat(JS文件合

gulp自动化任务脚本在HybridApp开发中的使用

目前做前端开发的同学可能都熟悉grunt,fis之类的自动化构建工具,其实在HybridApp开发中我们也可以使用这些工具来简化我们的工作,gulp就是一个比grunt,fis都先进的构建工具,用好gulp可以简化我们的工作流程,提升产品质量.本文会详细的说明我们移动App项目gulp的使用经验,部分关于gulp的介绍来自国外网站. gulp是 Fractal公司发布的一个新的基于nodejs的构建系统,目标是取代Grunt,成为最流行的JavaScript任务运行器.目前ionic框架默认的构

构建工具-Gulp 相关知识

layout: layout title: 『构建工具-Gulp』相关内容整理 date: 2017-04-26 22:15:46 tags: Gulp categories: Tools --- Gulp- 简介 Automate and enhance your workflow | 用自动化构建工具增强你的工作流程 Gulp 是什么? gulp是前端开发过程中一种基于流的代码构建工具,是自动化项目的构建利器:它不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完

Web性能优化:图片优化

程序员都是懒孩子,想直接看自动优化的点:传送门 我自己的Blog:http://blog.cabbit.me/web-image-optimization/ HTTP Archieve有个统计,图片内容已经占到了互联网内容总量的62%,也就是说超过一半的流量和时间都用来下载图片.从性能优化的角度看,图片也绝对是优化的热点和重点之一,Google PageSpeed或者Yahoo的14条性能优化规则无不把图片优化作为重要的优化手段,本文覆盖了Web图片优化的方方面面,从基本的图片格式选择.到尚未被

响应性web设计实战总结(二)

阅读目录 背景知识: Gulp-less安装及配置如下 对响应性web总结,之前总结过2篇文章:可以看如下: http://www.cnblogs.com/tugenhua0707/p/4147569.html http://www.cnblogs.com/tugenhua0707/p/4598657.html 今天我们再来讲解下 对于移动端,我们如何开发: 回到顶部 背景知识 针对移动端css媒体查询的开发,需要针对不同的手机写不同的媒体查询, 如下css代码: // 针对独立像素在320px

glup 入门

本文是gulp的入门级介绍,主要内容包括什么是gulp,gulp与grunt有什么区别,gulp可以解决grunt存在的哪些问题,以及一个简单的说明例子. 什么是gulp gulp的官方定义非常简洁: 基于文件流的构建系统 .这里强调了 streaming,也就是gulp与grunt的在构建流程上的主要区别.具体区别在哪里,后面会简单介绍. 另一个grunt? 相信很多前端的同学对grunt都不陌生,grunt的出现可以说是前端的福音,之前很多需要人肉完成的重复工作,用了grunt,一个命令就搞