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. qt creator源码全方面分析(4-1)

    目录 d指针和q指针 简单示例 q指针 QObject和QObjectPrivate qtcreator中的变体1 qtcreator中的变体2 小结 d指针和q指针 我们在类成员名称和使用d指针中, ...

  2. 02-css3之2D转换

    一.CSS3 -2D转换 转换(transform)可以实现元素的位移.旋转.缩放等效果.可以理解为变形. 1. 2D转换之移动translate 可以改变元素的页面中的位置,类似于定位. 1.1语法 ...

  3. ASE课程总结 by 张葳

    本期ASE课程分为两个阶段,第一阶段的personal project与第二阶段的team project,其中,第一阶段旨在锻炼我们个人的问题解决能力和编程能力,第二阶段则锻炼主要我们的管理能力,合 ...

  4. C - Infinite Fence -1260C

    考虑区间长度,我们让r和b除以他们的__gcd这样,这样得到的r和b是互质或者相等的.我们取他们两个小的那个.假设是b.那么被涂的方块应该是b,2b,3b,4b,....kb. 相邻的两个方块之间的区 ...

  5. Jmeter工具 组件简单认识

    JMETER 所有的组件(元素)都是基于测试计划的,先有测试计划然后才有 JMETER 组件 JMETER 核心组件1.JMETER中的 Threads 类似与线程数,每一个线程数代表一个虚拟用户:测 ...

  6. Youtube推荐算法的前世今生

    第一阶段,基于User-Video图游历算法,2008年[1]. 在这个阶段,YouTube认为应该给用户推荐曾经观看过视频的同类视频,或者说拥有同一标签的视频.然而此时,YouTube的视频已是数千 ...

  7. Java面试系列第2篇-Object类中的方法

    Java的Object是所有引用类型的父类,定义的方法按照用途可以分为以下几种: (1)构造函数 (2)hashCode() 和 equals() 函数用来判断对象是否相同 (3)wait().wai ...

  8. 曹工杂谈--只用一个命令,centos系统里装了啥软件,啥时候装的,全都清清楚楚

    前言 一直以来,对linux的掌握就是半桶水的状态,经常yum装个东西,结果依赖一堆东西:然后再用源码装个东西,只知道make.make install,背后干了啥也不清楚了,卸载也不方便. 这几天工 ...

  9. strpos的坑

    $a = 'abcd'; $c = 'a'; echo strpos($a,$c)!==false ? '原来是兄弟' : '非我族类,砍ta';

  10. Bat 脚本 删除某一行

    findstr /v /i /c:"kiwi" /c:"oranges" myfile.txt >newfile.txt