gulp

了解

首先我们了解一下什么是gulp, gulp是前端自动化构建工具,在开发过程中很多重复的任务,我们都可以正确的使用gulp来完成,gulp基于nodejs,使用gulp可以做很多事情

例如gulp转less语法,js压缩,css压缩,html压缩,下面我大体说一下这个gulp的主流程

gulp


gulp的主流程

  • 首先你要安装nodejs环境.
  • 全局安装gulp,然后你每次使用gulp的项目中还要安装一下gulp以及你在项目中所用到的插件也安装好.
  • 然后你在运行该命令行的目录下新建一个名为gulpfile.js,并在里面写好配置信息,
  • 然后再运行gulp任务就ok了

1.gulp的安装

  • gulp安装前的环境配置

    • 安装gulp的前提是你已经经有了nodejs的运行环境,
    • 查看是否安装了nodejs,如果输出版本号,说明已经安装了node
node -v
  • 以上步骤完成之后,先初始化一下npm init,然后再全局安装gulp
npm install -g gulp-cli
  • 全局安装gulp后,还需要在每个要使用gulp的项目中都单独安装一次。把目录切换到你的项目文件夹中,然后在命令行中执行:
npm install gulp --save-dev

解释一下:--save-dev是package.json文件中的依赖,最好加上


2.使用gulp

  • 安装完之后就是如何使用了,先在你这个目录下新建一个gulpfile.js的文件,里面写我们定义的任务,例如以下代码是对less转换为css的

    注意:你可以自己起一个任务名,运行的时候,直接在命令行输入gulp 任务名,gulp也给我们定义了一个默认任务名default,如果任务名为

    default,直接在命令行输入gulp即可
先引入包
const gulp = require('gulp') //这个每次都要引入,在你使用插件的时候
const less = require('gulp-less') // 定义任务对less进行转换,myless是你自己定义的任务名
gulp.task('myless', function() {
// 1.匹配到要处理的文件,目录src/less/*.less下的所有后缀名为`.less`的所有文件
gulp.src('src/less/*.less')
// 2.对less语法进行转换!
.pipe(less())
// 3.指定文件的输出目录dist/css
.pipe(gulp.dest('dist/css'))
})

3.gulp常用的插件

3.1 转换less语法

安装npm install gulp-less --save-dev

const less = require('gulp-less')

// 定义任务对less进行转换,myless是你自己定义的任务名
gulp.task('myless', function() {
// 1.匹配到要处理的文件,目录src/less/*.less下的所有后缀名为`.less`的所有文件
gulp.src('src/less/*.less')
// 2.对less语法进行转换!
.pipe(less())
// 3.指定文件的输出目录dist/css
.pipe(gulp.dest('dist/css'))
})

3.2 对 js 语法进行压缩和混淆

安装npm install gulp-uglify --save-dev

const uglify = require('gulp-uglify')

// 对js请求进行压缩和混淆
// 定义任务
gulp.task('myscript', function() {
// 1.匹配要处理的文件
gulp.src('src/js/*.js')
// 2.将js代码压缩混淆
.pipe(uglify())
.pipe(gulp.dest('dist/js'))
})

3.3 对html代码进行压缩

安装npm install gulp-htmlmin --save-dev

// 对html进行压缩的包
const htmlmin = require('gulp-htmlmin') // 对html进行压缩
// 定义任务
gulp.task('myhtml', function(){
// 1.匹配到要处理的html文件
gulp.src('src/*.html')
// 2.对html进行压缩!
.pipe(htmlmin({
collapseWhitespace:true // 去除空白符
}))
// 3.输出
.pipe(gulp.dest('dist'))
})

3.4 对css进行压缩

安装 npm install gulp-cssnano --save-dev

const cssnano = require('gulp-cssnano')

// 定义任务
gulp.task('mycss', function(){
// 1.
gulp.src('src/css/*.css')
.pipe(cssnano())// 消化,转换,压缩
.pipe(gulp.dest('dist/css'))
})

4.gulp的API

  • gulp.task

    • 作用:定义一个任务:
    • 示例:
      •   gulp.task('任务名', function(){
        // 任务内容
        })
    • 执行: 在命令行,gulpfile.js所在目录执行 gulp 任务名
  • gulp.src

    • 作用: 匹配到我们想要处理的文件!
    • 示例:
      •   gulp.task('任务名', function(){
        // 如: './style.less'
        // 如: './*.less'
        // 如: '*.*' // 当前目录的下所有文件!
        // 如: **/*.* // 当前目录所有目录下的所有文件
        这个参数还可以是一个数组
        gulp.src(['./stlyle.less','./test.less','*.*'])
        gulp.src('路径字符串')
        .pipe(less()) // 语法转换
        .pipe(gulp.dest('文件输出目录'))
        })

  • gulp.dest('文件输出目录')

  • gulp.watch

    • 作用:** 监视文件变化然后自动执行相应的任务!,不用每次都要敲命令**
    // 我们还自动监视文件变化,然后执行相应任务
gulp.task('mywatch', function(){
// 监视指定文件的变化,如果变化就执行相应的任务!
gulp.watch('src/**/*.*',['mycss','myhtml','myscript','myless'])
})

注意:这里输入的命令行的代码是gulp 任务名,在上面的代码中是gulp mywatch,千万不要和webpack混淆了

  • gulp.run

// 我们可以新建一个任务,用这个任务去启动其他任务!
// 如果在命令行输入gulp 会直接执行当前目录的名为default的任务
gulp.task('default' ,function(){
//console.log(1111)
// run方法是用来执行其他任务
// 参数是任务名,如果写成数组形式,那么数组中的元素就是要执行的任务名 gulp.run(['mycss','myhtml','myscript','myless'])
})

假设你有好多文件需要打包,这样做的目的是为了你输入命令的时候,不用再输入好多文件名来执行了,直接输入gulp,就是新建一个任务default,用这个任务去启动其他任务

在gulp中也可以使用browser-sync

  • 需要在当前项目目录安装:npm install browser-sync --save-dev

    这时候想把gulp和browser-sync合成一个命令,只能是把browser的命令省掉,用gulp来代替,那么命令省掉了,最终就要换成代码,如下所示
//启动boswerSync服务
browserSync.init({
server:"./src", //指定网站目录,访问时不需要 ,就是帮你自动刷新浏览器http://localhost:3000/后面
//的目录,可以省略不写,*这里的路径一定要写对*
files:["./src/**/*.*"]
})

和watch合起来的代码:

//这个broserSync是自动帮你刷新浏览器
const browserSync = require('browser-sync') //我们还自动监视文件变化,然后执行相应任务
gulp.task("mywatch",function(){
//启动boswerSync服务
browserSync.init({
server:"./src", //指定网站目录,访问时不需要
//输入这个目录(网站根目录就是端口号后面的目录的父级)
files:["./src/**/*.*"]
})
// 监视指定文件的变化,如果变化就自动执行相应的任务(想监视谁,就在数组里写谁)
gulp.watch('src/**/*.*',['myless'])
})

注意:如果更改了gulpfile.js文件要重启我们的任务!

gulp的基本使用的更多相关文章

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

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

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

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

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

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

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

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

  5. gulp详细入门教程

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

  6. 做一个gulp+webpack+vue的单页应用开发架子

    1.目标 最近项目上的事情不多,根据我自己的开发习惯,决定开发一些简单的开发架子,方便以后事情多的时候直接套用.本文讲的一个gulp+webpack+vue的单页应用架子,想要达到的目的: 可以通过命 ...

  7. 前端自动化构建工具gulp记录

    一.安装 1)安装nodejs 通过nodejs的npm安装gulp,插件也可以通过npm安装.windows系统是个.msi工具,只要一直下一步即可,软件会自动在写入环境变量中,这样就能在cmd命令 ...

  8. gulp初学

    原文地址:gulp初学 至于gulp与grunt的区别,用过的人都略知一二,总的来说就是2点: 1.gulp的gulpfile.js  配置简单而且更容易阅读和维护.之所以如此,是因为它们的工作方式不 ...

  9. gulp批量打包文件并提取公共文件

    gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器. browseriyf是模块化打包工具. 一般情况下,Browserify 会把所有的模块打包成单个文件.单个文件在大多数情况下是 ...

  10. 使用gulp解决RequireJS项目前端缓存问题(二)

    1.前言 这一节,我们主要解决在上一节<使用gulp解决RequireJSs项目前端缓存问题(一)>末尾提到的几个问题: 对通过require-config.js引入的js文件修改后,没有 ...

随机推荐

  1. 跟着百度学PHP[6]超级全局变量

    超级全局变量在PHP 4.1.0之后被启用, 是PHP系统中自带的变量,在一个脚本的全部作用域中都可用. 参考文献:http://www.runoob.com/php/php-superglobals ...

  2. zabbix安装unixODBC配置完之后报错

    zabbix安装unixODBC配置完之后报错 libmysqlclient_16 not defined in file libmysqlclient_r.so.16 分析 我没有使用centos6 ...

  3. AxureRp 打开SVN上的团队项目

    打开Axure,在菜单项中,点击 "团队" 菜单,选择 "获取团队项目": 切换到 "SVN" 选项, 填写正确的Axure项目的路径,打开 ...

  4. magento后台使用POST表单时,要使用必要参数form_key才能正常通讯

    <form action="<?php echo $this->getSaveUrl() ?>" method="POST" encty ...

  5. Servlet调用过程

    (1)在浏览器输入地址,浏览器先去查找hosts文件,将主机名翻译为ip地址,如果找不到就再去查询dns服务器将主机名翻译成ip地址. (2)浏览器根据ip地址和端口号访问服务器,组织http请求信息 ...

  6. jquery Datatables 行数据删除、行上升、行下降功能演示

    Datatables 是一款jquery表格插件.它是一个高度灵活的工具,可以将任何HTML表格添加高级的交互功能. 官方网站:http://www.datatables.net Datatables ...

  7. Servlet引擎Jetty之入门1

    Jetty与tomcat一样,HttpWeb容器,支持实现Servlet规范. 详细介绍参考:https://www.ibm.com/developerworks/cn/java/j-lo-jetty ...

  8. ORACLE 迁移MYSQL 随笔

    1.把服务器上的ORALCE 数据库导成DMP,然后导入本机的临时库 2.先把ORACLE 表中的DATE 改为TIMESTAMP; a.先建立个表 create table type_table_i ...

  9. wap支付宝接口的问题

    今天在支付宝接口开发时,遇到的两个坑 第一个: https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.8nHr4i& ...

  10. scala eclipse plugin 插件安装

    最近在看Apache Apollo 代码,其中有很多scala代码,没办法需要安装一个scala插件. 我试过zip 安装,直接下载的update-site.zip 不能直接安装到位.我又特别懒,不想 ...