1.安装和使用

  • 安装node环境:官网:https://nodejs.org;
  • 命令行输入 npm i gulp -g ,gulp-v查看安装是否成功;
  • 创建项目目录;
  • 进入目录,并在目录中按住shift+鼠标右键,进入命令行工具执行npm init -y 初始化项目,此时会自动生成package.json文件;
  • dist用于存放gulp任务执行后代码,src为工作源代码;
  • 在当前项目局部安装gulp,npm i gulp -dev。

  • -dev的意思是安装成开发依赖,也就是说这个包只有开发环境需要,线上产品环境不需要。这样的话即使删除node_modules也可以直接运行 npm i 就可以根据package.json里面的所有依赖包信息把这些依赖包全局安装进来;

  • --production 线上服务器运行环境,项目运行依赖;
  • package.json文件中,“scripts” 为常用执行代码快捷命令,采用npm run +‘所定制的快捷命令’ 快速执行代码。
  • 创建gulpfile.js文件,在此文件中书写各种Gulp任务;
  • 通过https://www.npmjs.com/ 下载各种插件。
  • webstrom配置gulp

2.部分插件简介

  • gulp-htmlmin   :html文件压缩;
  • gulp-csso        :css文件压缩;
  • gulp-babel       :JavaScript语法转化;
  • gulp-less    :less语法转换为css语法;
  • gulp-uglify  :压缩混淆JavaScript;
  • gulp-file-include  :公共文件包含提取;被提取的网页公共部分中插入(@@include('./common/header.html')
  • browsersync :浏览器实时同步

3.部分实现代码

const gulp = require('gulp');
const htmlmin = require('gulp-htmlmin');
const fileinclude = require('gulp-file-include');
const less = require('gulp-less');
const csso = require('gulp-csso');
const babel = require('gulp-babel');
const uglify = require('gulp-uglify');
gulp.task("first",()=>{
console.log('第一个gulp任务')
return gulp.src('../src/css/base.css')
.pipe(gulp.dest('../dist/css'));
});
gulp.task("htmlmin",()=>{
return gulp.src('../src/*.html')
.pipe(fileinclude())
.pipe(htmlmin({ collapseWhitespace: true}))
.pipe(gulp.dest('../dist'));
})
gulp.task('cssmin',()=>{
return gulp.src(['../src/css/*.less','../src/css/*.css'])
.pipe(less())
.pipe(csso())
.pipe(gulp.dest('../dist/css'))
})
gulp.task('jsmin',()=>{
return gulp.src('../src/js/*.js')
.pipe(babel({
presets: ['@babel/env']
})
)
.pipe(uglify())
.pipe(gulp.dest('../dist/js')) })
gulp.task('copy',()=>{
gulp.src('../src/lib/*')
.pipe(gulp.dest('../dist/lib'))
return gulp.src('../src/images/*')
.pipe(gulp.dest('../dist/images'))
})
// gulp.task('default',['first','htmlmin','cssmin','jsmin','copy']) 报错 Task function must be specified 
gulp.task('default',gulp.parallel('first','htmlmin','cssmin','jsmin','copy')); 

4.报错解决分析

  gulp 3 与 gulp 4 区别:

  在Gulp 4.+ 中提供了 gulp.series 和 gulp.garallel   gulp 4.+ => gulp.task 只有两个参数

  > gulp.series:按照顺序执行

  > gulp.parallel:同时(并行)执行计算

  你的任务是否在这些前置依赖的任务完成之前运行了?请一定要确保你所依赖的任务列表中的任务都使用了正确的异步执行方式:使用一个 callback,或者返回一个 promise 或 stream。

   按照官网的说辞,有以下三种 异步任务支持

  接收一个 callback

  gulp.task('one',(callback)=>{
  // coding...
  callback(); //完成 task
 });

  gulp.task('default',gulp.series('one',()=>{
  // coding...
 }));
  返回一个 stream

  gulp.task('somename', function() {
  return gulp.src('client/**/*.js')
  .pipe(minify())
  .pipe(gulp.dest('build'));
 });
  返回一个 promise

  gulp.task('message', function() {
  return new Promise(function(resolve, reject) {
  // coding...
  resolve();
  );
 });





gulp插件学习01的更多相关文章

  1. gulp入门学习实例

    好久都没有更新博客了,每天繁忙的工作,下班之后都不想开设备了.前段时间有幸学习了一下gulp这款构建工具,现在和大家分享一下. 为什么使用Gulp Gulp基于Node.js的前端构建工具,通过Gul ...

  2. 将less编译成css的gulp插件

    简介:gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成:使用她,我们不仅可以很愉快的编写代码, ...

  3. Python学习--01入门

    Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...

  4. gulp 插件

    原文链接:http://www.mamicode.com/info-detail-517085.html gulp是什么? http://gulpjs.com/ 相信你会明白的! 与著名的构建工具gr ...

  5. Gulp 插件及其使用

    前端现在有很多的自动打包工具,各有优缺点,而gulp作为其中的一员,也有着很受人们的青睐,简单粗暴,然而gulp本身并没有提供很多的API,真正的一些工作则是靠着插件完成的,本文简单介绍一些常用的gu ...

  6. 前端构建工具Gulp的学习和使用

    前几天刚鼓捣了Grunt的使用,结果文档还没捂热,老大说我们还是用gulp吧,搞得我又得来整gulp,眼泪流成河了,真是不晓得底层人民的辛苦啊.不过经过对gulp的学习,发现很好用,比grunt舒服! ...

  7. Winform设计-小百货 涵盖基础插件学习(适合新手)

    Winform设计-小百货 涵盖基础插件学习(适合新手)   第一次写winform,主要是为了加快对  事件的 理解. 代码如下: private void Form1_Load(object se ...

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

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

  9. uexQQ插件学习心得

    uexQQ插件学习心得 uexQQ插件的作用:通过qq可以分享图文,音乐,应用到相应的qq空间.支持手机客户端分享和手机webQQ分享.下面我们就来看一看他的一些方法. 我们先说一下分享的步骤,这个步 ...

随机推荐

  1. 数据结构和算法(Golang实现)(14)常见数据结构-栈和队列

    栈和队列 一.栈 Stack 和队列 Queue 我们日常生活中,都需要将物品排列,或者安排事情的先后顺序.更通俗地讲,我们买东西时,人太多的情况下,我们要排队,排队也有先后顺序,有些人早了点来,排完 ...

  2. DES原理及代码实现

    一.DES基础知识DES技术特点 DES是一种用56位密钥来加密64位数据的方法    DES采取了分组加密算法:明文和密文为64位分组长度    DES采取了对称算法:加密和解密除密钥编排不同外,使 ...

  3. python嵌套列表知多少

    今天在创建嵌套列表时遇到一个问题,决定看看到底是谁在背后捣鬼 >>> board1 = [[0]*3 for _ in range(3)] [[0, 0, 0], [0, 0, 0] ...

  4. Cucumber(1) —— 环境配置

    目录 学习资料 cucumber简介 cucumber环境配置 学习资料 1.cucumber官方学习网站 cucumber简介 1.cucumber是一种支持BBD(behavior-driven ...

  5. spring boot 项目 mvn clean install 报 "Unable to find main class" 的解决方法

    按照步骤来总会解决的 检查pom.xml中是否加入了spring boot maven插件 <build> <plugins> <plugin> <group ...

  6. 【题解】POJ3041 Asteroids - 图论 - 二分图匹配

    声明:本博客所有题解都参照了网络资料或其他博客,仅为博主想加深理解而写,如有疑问欢迎与博主讨论✧。٩(ˊᗜˋ)و✧*。 POJ3041 Asteroids 题目描述 假如你现在正处在一个 \(N*N\ ...

  7. 技术周刊 · 0202 年了,你还不学一下 WASM 么?

    蒲公英 · JELLY技术周刊 Vol.04 「蒲公英」期刊全新升级--JELLY技术周刊!深度挖掘业界热点动态,来自团队大咖的专业点评,带你深入了解团队研究的技术方向. 登高远眺 天高地迥,觉宇宙之 ...

  8. 如何快速地恢复你的win10

    win10清单 这份List不会介绍如何安装系统,而是当面对一个新系统,如何最快的搭建,或者说恢复到一个生产力环境. 必备习惯 备份软件安装包和常用内容上云是高效恢复的两点关键. 备份软件安装包 我的 ...

  9. Centos 7服务器搭建MySQL(mariadb)服务

    1.下载并安装MySQL yum install mariadb mariadb-server -y 2.启动MySQL systemctl start mariadb 3.对mariadb进行初始化 ...

  10. Mac安装多版本JDK

    0. 配置JDK环境 安装完成之后,配置.bash_profile文件 使用source ./bash_profile激活 2. 如何切换默认的jdk? 使用java -version就可以看默认版本 ...