1、js压缩

注意在根目录的package.json文件里在成功安装uglify后要有 "gulp-uglify": "^1.5.4" 才行

var gulp = require('gulp'),
  gulpLoadPlugins = require('gulp-load-plugins'),   //插件使用取代多次require(......)
  plugins = gulpLoadPlugins();
var uglify=require('gulp-uglify');
gulp.task('default',function(){
  console.log('default');
});
gulp.task('utjs',['default'],function(){     //先执行任务default
  return gulp.src('src/js/*.js')
  .pipe(plugins.uglify())                      //这里plugins.****
  .pipe(gulp.dest('build'));
});

build目录里无文件夹时,自动匹配src文件结构生成,有文件夹时,build根生成,要想指定时,自己设置 .pipe(gulp.dest('build')); --> build/js或其他

2、gulp.src(path,{})---{base:'......'}作用

  gulp.src('src/js/*.js',{base:'src'}),在build内有目录时,加了base则不再生成在根目录,而是按照src的目录结构生成

3、异步问题

gulp.task('default',['two']);
gulp.task('two',['one'],function(){
  console.log(888+'two');
});
gulp.task('one',function(fn){
  setTimeout(function(){
    console.log(888+'one');
    fn();
  },2000);
});

  3.1 先说default,为默认任务,执行default可以直接gulp,所有任务可以无fun

  3.2 一般情况下,异步的时间到了才执行,所以还是two的先执行了,这里,无fn时,顺序为one->two->default,输出console.log(888+'two');->console.log(888+'one');

  3.3 fn:任务函数提供的回调,用来通知任务已经完成,就是one任务完成,然后才执行two,最后default,输出:

    

4、watch:gulp.watch(glob[,opts],tasks)

  4.1

  gulp.watch('src/js/*.js',['three']);

  gulp.task('three',function(){
    console.log('three');

    //此处可以放页面刷新或者js压缩
  });

  改变js文件时变化:

  

  4.2

  var watcher=gulp.watch('src/js/b.js',['four']);

  watcher.on('change',function(e){
    console.log('change');
    console.log(e.type+'、'+e.path);
  });
  gulp.task('four',function(){
    console.log('112');
  });

  //gulp four

  

  watch从上向下执行,监听change先执行,输出的是类型和路径

5、rename/放在压缩后,x.min.js

  ....pipe(plugins.uglify()).pipe(plugins.rename())....

  更多: https://www.npmjs.com/package/gulp-rename

6、minify-css

gulp.task('mincss',function(){
return gulp.src('src/less/*.css',{base:'src'})
.pipe(plugins.minifyCss())
.pipe(gulp.dest('build'));
});

有无return好像没区别,base还是要写上的,这边跟空时,没有按照src目录结构生成

7、minify-html

 gulp.task('minhtml',function(){
return gulp.src('src/html/**/*.html',{base:'src'})
.pipe(plugins.minifyHtml())
.pipe(gulp.dest('build'));
});

要先安装npm install --save-dev gulp-minify-html,之前的也一样

8、concat

 gulp.task('concat',function(){
gulp.src('src/js/**/*.js',{base:'src'})
.pipe(plugins.uglify())
.pipe(plugins.concat('ab.js'))
.pipe(gulp.dest('build'));
});

concat('x.js') ---> x为未存在的js时,合并并生成x.js,x为存在的js时候,合并到x.js里面在build里生成,合并顺序好像是按js文件名字母顺便合并的

9、less/sass

 gulp.task('less',function(){
gulp.src('src/less/*.less')
.pipe(plugins.less())
.pipe(gulp.dest('build/css'))
});

类似的,装sass时有点插曲,先放着

LAST:宗旨------一个gulp命令,所有代码自动压缩、转化、合并......管理so easy

Gulp-前端进阶A-2的更多相关文章

  1. 我在阿里这仨月 前端开发流程 前端进阶的思考 延伸学习的方式很简单:google 一个关键词你能看到十几篇优秀的博文,再这些博文中寻找新的关键字,直到整个大知识点得到突破

    我在阿里这仨月 Alibaba 试用期是三个月,转眼三个月过去了,也到了转正述职的时间.回想这三个月做过的事情,很多很杂,但还是有重点. 本文谈一谈工作中遇到的各种场景,需要用到的一些前端知识,以及我 ...

  2. [前端进阶课] 构建自己的 webpack 知识体系

    webpack webpack 最出色的功能之一就是,除了 JavaScript,还可以通过 loader 引入任何其他类型的文件. Webpack 核心概念: Entry(入口):Webpack 执 ...

  3. gulp 前端自动化工具

    一开篇 在前端开发的过程中,我们经常会碰到压缩.合并.图片script 等,于是就有了gulp 前端自动化构建工具,它能帮你在前端开发中,节省时间. 1,安装 node.js 因为gulp 构建工具是 ...

  4. gulp前端自动化工作流

    gulp前端自动化工作流 为什么要有自动化的流程? 在我们的开发过程中有大量的重复操作 DRY Don't repeat yourself 开发人员的精力应放在哪? 创造,新的一切前端开发的编译操作 ...

  5. gulp 前端构建工具入门

    gulp 前端构建工具入门 标签(空格分隔): gulp 1. 安装gulp npm i -g gulp 2. 创建gulp项目 2.1 Hello world 使用npm init初始化项目文件夹. ...

  6. gulp前端自动化入门

    一.从零开始搭建gulp前端自动化 1.首先安装nodejs 2.npm init 初始化 生成package.json 2.1 可以选装cnpm cnpm是淘宝提供的服务 安装:命令提示符执行npm ...

  7. gulp 前端构建工具使用

    gulp 前端构建工具使用 1.新建一个web  h5项目 2.准备好gulpfile.js文件 (1)下载链接:https://pan.baidu.com/s/116J-BaYOMRzeJW3i_J ...

  8. 前端进阶必读:《JavaScript核心技术开发解密》核心提炼二

    前言 最近读勒基本关于前端的数据<JavaScript核心技术开发解密>,<webpack从入门到进阶>...这几本书帮助到我更好的理解JS.webpack在前端技术领域中的作 ...

  9. 前端进阶之认识与手写compose方法

    目录 前言:为什么要学习这个方法 compose简介 compose的实现 最容易理解的实现方式 手写javascript中reduce方法 redux中compose的实现 参考文章 最后 前言:为 ...

  10. 前端进阶(1)Web前端性能优化

    前端进阶(1)Web前端性能优化 Web前端性能优化, 不仅能够改善站点的用户体验,并且能够节省相当的资源利用.下面将从1)服务器.2)html内容.3)css. 4)javascript. 5)图片 ...

随机推荐

  1. 用gameMaker做个小游戏

    看下面这个课程链接,半小时学会 http://study.163.com/course/courseMain.htm?courseId=352004#/courseMain 这是我做的:http:// ...

  2. VisualSFM for Structure from Motion

    VisualSFM是Changchang Wu编写的使用 Structure from Motion (SfM)进行3D重建的交互界面,具体内容详见http://homes.cs.washington ...

  3. [原]SQLite的学习系列之获取数据库版本

    最先了解到SQLite是基于其作为移动客户端数据存储平台,以下是其官网(https://www.sqlite.org/)关于SQLite的一段介绍: SQLite是遵守ACID的轻型数据库引擎,它包含 ...

  4. C# 对话框隐藏 标题栏

    在对话框设计窗口上双击,进入如下函数 private void Form1_Load(object sender, EventArgs e) { this.FormBorderStyle = Form ...

  5. SNF开发平台WinForm之五-高级查询使用说明-SNF快速开发平台3.3-Spring.Net.Framework

    5.1运行效果: 5.2开发实现: 1.按上面效果来说,先来看一下在程序当中如果调用.第一步在页面拖拽一个按钮为“高级查询”,事件上写下如下代码: 如果是单表查询的话,只需要传GridView就行,如 ...

  6. 如何对excel进行列查重

    学习了excel函数:countif.表达式:COUNTIF(数据区域,条件),作用:对数据区域内符合条件单元格计数 具体应用 在“姓名”(列A)后插入一列(列B),在B2单元格输入公式“=IF(CO ...

  7. bash的一些小技巧

    1.从输入读入变量 eg:read -ep "input yes or no: " flag 用e选项表示编辑,可以使用backspace删除 2.数组 a.索引数组 declar ...

  8. .Net底层剖析目录章节

    [.Net底层剖析]目录章节 1.[深入浅出.Net IL]1.一个For循环引发的IL 2.[.Net底层剖析]2.stfld指令-给对象的字段赋值 3.[.Net底层剖析]3.用IL来理解属性 作 ...

  9. Microsoft Visual Studio 2013 VSTS单元测试指南

    安装vs2013时并未安装VSTS工具包,所以在工具栏:工具->拓展和更新   进行下载安装 vs13已经用了两年了,相比于之前老师推荐的vc6.0感觉要强出很多,刚上手时感觉比较困难,在使用一 ...

  10. PintJS – 轻量,并发的 GruntJS 运行器

    PintJS 是一个小型.异步的 GruntJS 运行器,试图解决大规模构建流程中的一些问题. 典型的Gruntfile 会包括 jsHint,jasmine,LESS,handlebars, ugl ...