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. mysql:ibdata1和mysql-bin log管理

    MySql ibdata1文件太大如何缩小 MySql innodb如果是共享表空间,ibdata1文件越来越大,达到了30多个G,对一些没用的表进行清空:truncate table xxx;然后o ...

  2. Erlang C1500K长连接推送服务-性能

    Whatsapp已经使用Erlang在生产环境跑到96GB内存单机 3M长连接,参加:WhatsApp的Erlang世界.毕竟业务级别能达到Whatsapp那样极少,现在只有千万级,单机太多挂一台影响 ...

  3. asp.net4.5尚未在web服务器上注册 解决方案

    以前都是直接用aspnet_regiis.exe -i 现在用这个不好使了,解决办法打微软补丁. https://blogs.msdn.microsoft.com/webdev/2014/11/11/ ...

  4. Qt json 数据处理

    用到的头文件 #include <QJsonArray> #include <QJsonDocument> #include <QJsonObject> json解 ...

  5. Linux+PHP+MySql网站迁移配置

    LINUX下MYSQL数据库默认数据库文件位置: 数据库文件默认在:cd /usr/share/mysql 配置文件默认在:/etc/my.cnf ———————————– 数据库目录:/var/li ...

  6. Ansible Ubuntu 安装部署

    一.安装: $ sudo apt-get install ansible 二.配置: a.基本配置 $ cd /etc/ansible/ $ sudo cp hosts hosts_back 备份一个 ...

  7. javascript export excel

    <input type="button" onclick="tableToExcel('tablename', 'name')" value=" ...

  8. POJ 2352 Stars 线段树

    题目链接 题意:在一个二维平面上有n个星星,每个星星的等级为x,x为该星星左方和下方所包含的星星的数量(包含正左和正下的),输出每个等级各有多少星星,星星坐标按照y序递增给出,y值相同按照x递增给出. ...

  9. Linux中的用户和用户组

      在Linux中,有三种用户: Root 用户:也称为超级用户,对系统拥有完全的控制权限.超级用户可以不受限制的运行任何命令.Root 用户可以看做是系统管理员. 系统用户:系统用户是Linux运行 ...

  10. css中“~”和“>”是什么意思?

    css中"~"是: 为所有相同的父元素中位于 p 元素之后的所有 ul 元素设置背景: p~ul{ background:#ff0000; }    <p>快乐生活&l ...