学习gulp的简单笔记。原教学视频:https://www.bilibili.com/video/BV1NE411T7Z2?p=396。

gulp基本使用流程

  1. 初始化项目目录:
cnpm init      //或者改为npm指令
  1. 安装到项目文件夹:
cnpm install gulp@3.9.1 --save-dev
cnpm i gulp-scss gulp-minify-css gulp-rename -D    //一次下载多个第三方插件
  1. 创建一个gulpfile.js文件

  2. 在gulpfile.js文件中编写任务

    (全局配置好命令行工具,之后会多出gulp命令行任务)

    cnpm install gulp-cli -g
    
  3. 在控制台通过 gulp 任务名 ,运行编写好的任务

common.Js规范使用模块

1.require() 将这个模块引入

2.使用这个模块上的函数

const gulp = require('gulp');  //引入一个gulp函数库
//编写第一个任务
//参数1:任务的名字,自定义    参数2:回调函数,任务执行的功能
gulp.task('hello',function(){})

gulp基本函数

gulp.src()    //找到源文件路径
gulp.dest()    //找到目标文件路径,如果该文件路径不存在则会自动创建
gulp.task()    //建立gulp任务
gulp.watch()    //监控文件的变化
.pipe()    //理解程序运行管道
使用实例
const gulp = require('gulp');  //引入一个gulp函数库
gulp.task('hello',function(){       //建立任务gulp.src("./src/css/base.css")    //获取要处理的文件.pipe(gulp.dest("./dist/css"));   //放入指定文件夹
})

gulp使用监听

gulp.task("watch",function(){gulp.watch()
//第一个参数:文件监听的路径;    第二个参数:要执行的任务
})

gulp使用插件

网址:gulp插件

使用步骤:

<1> 下载插件到本地

cnpm install 插件名 --save-dev

<2>通过require() 引入文件

<3>查阅插件用法并使用

压缩html (gulp-htmlmin)

压缩css (gulp-csso)

重命名插件 (gulp-rename)

处理js文件插件

  • gulp-conact 合并文件
  • gulp-uglify 压缩js 文件
  • gulp-babel ES6=>ES5语法转换

公共文件包含 (gulp-file-include)

启动服务器 (gulp-connect)

const connect=require("gulp-connect");
gulp.task("server",function(){connect.server({root:"dist",  //设置根目录port:8000,//livereload:true  //启动实时刷新})
})

package.json文件

项目依赖:

在项目的开发阶段和线上运营阶段,都需要依赖的第三方包。

使用npm install 包名命令下载的文件会默认被添加到package.json文件的dependencies字段中。

重新安装时使用 npm i --production 可以只下载项目依赖。

开发依赖:

在项目的开发阶段需要依赖,线上运营阶段不需要的第三方包。

使用npm install 包名 --save-dev命令将包添加到package.json文件的devDependencies字段中。

使用 npm install 会重新下载所有依赖。

package-lock.json

用于记录模块与模块之间复杂的依赖关系。

  • 锁定包的版本,确保再次下载时不会因为包版本不同而产生问题。

  • 加快下载速度,因为该文件中已经记录了项目所依赖第三方包的树状结构和包的下载地址,重新安装时只需下载即可。

一份我的gulpfile.js文件实例

//注意node和gulp版本,版本冲突可能会发生错误,我使用的是3.9.1版本gulp和10.22.0版本node
const gulp=require('gulp');
const htmlmin=require('gulp-htmlmin');
const fileinclude=require('gulp-file-include');
const rename=require('gulp-rename');
const sass = require('gulp-sass');
const csso = require('gulp-csso');
const babel = require('gulp-babel');
const uglify = require('gulp-uglify');
const imgmin=require('gulp-imagemin');
const connect = require('gulp-connect');//报错处理函数
function showError(error) {console.log(error.toString());this.emit('end');
}
//html文件压缩
gulp.task("htmlmin",function(){gulp.src("src/*.html").pipe(fileinclude()).on('error', showError).pipe(htmlmin({ collapseWhitespace: true })).on('error', showError).pipe(gulp.dest("./dist"));
})
//css代码压缩
gulp.task("cssmin",function(){return gulp.src(["src/css/*.scss","src/css/*.css"]).pipe(sass()).on('error', showError).pipe(csso()).on('error', showError)
/*     .pipe(rename({suffix:".min"})) */.pipe(gulp.dest("./dist/css"));
})
//js语法转换及代码压缩
gulp.task('jsmin', function ()  {return gulp.src('./src/js/*.js').pipe(babel({//可以判断当前代码运行环境并将代码转化为当前运行环境支持的代码presets: ['@babel/env']})).on('error', showError).pipe(uglify()).on('error', showError)
/*         .pipe(rename({suffix:".min"})) */.pipe(gulp.dest('./dist/js'));})
gulp.task('jsmin-module', function ()  {return gulp.src('./src/js/modules/*.js').pipe(babel({//可以判断当前代码运行环境并将代码转化为当前运行环境支持的代码presets: ['@babel/env']})).on('error', showError).pipe(uglify()).on('error', showError)
/*         .pipe(rename({suffix:".min"})) */.pipe(gulp.dest('./dist/js/modules'));
})
//图片拷贝处理
gulp.task("images", function(){gulp.src('./src/img/*')//.pipe(imgmin()).pipe(gulp.dest("./dist/img"));
})
//服务器任务
gulp.task("server", function ()  {connect.server({root: "./dist/",port: 5500,livereload: true})
})
//监听任务
gulp.task("watch", function() {gulp.watch("./src/*.html", ["htmlmin"]);gulp.watch("./src/common/*.html", ["htmlmin"]);gulp.watch("./src/css/*.css",["cssmin"]);gulp.watch("./src/css/*.scss",["cssmin"]);gulp.watch("./src/js/*.js",["jsmin"]);gulp.watch("./src/js/modules/*.js",["jsmin-module"]);gulp.watch("./src/img/*", ["images"]);
})
gulp.task("build",['htmlmin','cssmin','jsmin','jsmin-module','images','server',"watch"])

gulp学习笔记,基本使用流程,基本函数,使用监听、插件相关推荐

  1. Bootstrap 学习笔记8 下拉菜单滚动监听

    代码部分: <nav class="navbar navbar-default"><a href="#" class="navbar ...

  2. ROS2学习笔记22--使用launch启动/监听多个node节点

    概要:这篇内容主要介绍如何使用launch启动/监听多个node节点 环境:ubuntu20.04,ros2-foxy,vscode 最后如果没有陈述实操过程中碰到问题的话,则表示该章节都可被本人正常 ...

  3. oracle10g无监听配置文件,Oracle 10g学习笔记(七) tnsnames.ora 监听配置文件详解

    监听配置文件 为了使得外部进程 如 CAMS后台程序 能够访问 Oracle 数据库 必须配 置 Oracle 网络服务器环境 配置 Oracle 网络服务器环境是通过配置 listener.ora ...

  4. html 流程控制,HTML5独家分享:原生JS学习笔记2——程序流程控制

    当当当当 .....楼主又来了!新一期的js学习笔记2--程序流程控制更新了! 想一键获取全部js学习笔记的可以给楼主留言哦! js中的程序控制语句 常见的程序有三种执行结构: 1.顺序结构 2.分支 ...

  5. LIteOS学习笔记-7LiteOS启动流程与编译流程

    LIteOS学习笔记-7LiteOS启动流程与编译流程 LiteOS启动流程 1. 启动方式 2. 启动流程 硬件初始化 内核初始化 调试串口初始化 尝试进行网络连接 启动任务调度 LiteOS编译流 ...

  6. 小猫爪:i.MX RT1050学习笔记16-启动流程(Boot Flow)

    小猫爪:i.MX RT1050学习笔记16-启动流程(Boot Flow) 1 前言 2 bootROM的流程 2.1低功耗唤醒启动 2.2 正常启动 2.2.1 Serial Download 2. ...

  7. gulp构建项目(三):gulp-watch监听文件改变、新增、删除

    一.gulp.watch()功能介绍 举例说明:当'./src/*.html'发生变化时,执行'html'任务,同时刷新浏览器.如下: gulp.task('watch', function(){gu ...

  8. Vue学习(二)动态绑定与事件监听

    v-bind&v-on Day1 文章目录 v-bind&v-on 前言 一.V-bind 1.简单实现 2.Class的绑定 2.1对象绑定 2.2数组绑定 3.style的绑定 3 ...

  9. shell脚本编程学习笔记8(XDL)——流程控制和循环

    shell脚本编程学习笔记8--流程控制和循环 1,if语句 1,框架 1,单分支:if [条件判断式] ;thenprogramfiif [条件判断式]thenprogramfi注意:if语句使用f ...

最新文章

  1. comparator 与comparable之间的关系 注意实现接口comparable<T>时候,T的取值为实现类的类型,眼高手低容易犯迷糊的地方提醒
  2. 面向对象葵花宝典:思想、技巧与实践(36) - 设计原则如何用?
  3. centos 7 构造iptables开放80port
  4. python树莓派编程_python树莓派编程
  5. 素数个数(信息学奥赛一本通-T1151)
  6. 参考信息 - 云原生(Cloud Native)
  7. HTML下拉菜单为什么无线拉长,【CSS】怎么拉长一个div的高度
  8. Java环境安装手册
  9. python有趣小程序-抖音最火的整蛊表白小程序如何做出来的?教你用python做出
  10. 光环PMP ITTO
  11. 数字鉴相器matlab,一种数字鉴相器的设计.pdf
  12. oracle建索引时报ora00955 名称已由现有对象使用,关于处理ORA-00955: 名称已被现有对象占用的错误...
  13. 计算机网络安全开题报告怎么写,网络安全开题报告范文精选
  14. 技术分享 | ClickHouse StarRocks 使用经验分享
  15. 订单助手,拼多多,淘宝或者自定义商城,自动下单发货,无人值守店铺
  16. 【动网论坛7.1 sp1 修改】-修改发帖所贴的图的大小
  17. 从美术生到程序员转型之路【我的故事】,2021年五面蚂蚁
  18. matlab中voa,matlab 运算出错 function [w1,w2,VoA,VoB,VoC,VoD,VoE,VA1,VB1,VC1,
  19. 选择公理可能不成立,否则计算机可以生成真正的随机数
  20. Hypermedia模型是什么

热门文章

  1. 推动Windows的限制:USER和GDI对象 - 第1部分
  2. 使用和了解Valgrind核心:高级主题
  3. Micro Average vs Macro average Performance in a Multiclass classification setting
  4. 深入JS正则先行断言
  5. [deviceone开发]-心形点赞动画示例
  6. Windows 7安装PlayReady出现“任务被禁用”错误信息
  7. Blink, 通向哈里·波特的魔法世界
  8. 一条SQL引发的“血案”:与SQL优化相关的4个案例
  9. 2018年AI专业最全报考指南:去哪学?怎么去?
  10. 功率驱动电路中元件的选择