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. preg_match_all正则表达式的基本使用

    了解正则表达式之前,须要掌握一些常用的正则表达式的基础知识,这些如果能记得最好记得,记不住须要用的时候能查到就行,就多个特殊字符,所以说正则表达式玩的就是特殊,具体大家可以查看更加细致的说明. pre ...

  2. java之内部类(InnerClass)----非静态内部类、静态内部类、局部内部类、匿名内部类

    提起java内裤类(innerClass)很多人不太熟悉,实际上类似的概念在c++里面也有,那就是嵌套类(Nested Class),关于这俩者的区别,在下文中会有对比.内部类从表面上看,就是在类中定 ...

  3. Android之输入框光标和Hint的位置

    如图所示,要实现这一的需求,一般人的布局方式就是左边一button,右边一button,中间一个EditText,为了输入框的响应触摸范围更大往往不会把宽度设置为wrap_content,要么设置成m ...

  4. HBase 在HDFS 上的目录树

         总所周知,HBase 是天生就是架设在 HDFS 上,在这个分布式文件系统中,HBase 是怎么去构建自己的目录树的呢? 这里只介绍系统级别的目录树. 一.0.94-cdh4.2.1版本 系 ...

  5. 解决在IE下LABEL中IMG图片无法选中RADIO的几个方法

    转http://www.cnblogs.com/chenxianbin89/archive/2012/11/25/2787258.html . 方法三,THML代码控制: 在IMG中加一个属性,dis ...

  6. WebKit内核分析之Page

    参考地址:http://blog.csdn.net/dlmu2001/article/details/6213377 注:本系列博客是在原博主博客基础上增加了自己的理解和片段,可以看源博文获得清晰的结 ...

  7. 【Android学习】XML文本的三种解析方式(通过搭建本地的Web项目提供XML文件)

    XML为一种可扩展的标记语言,是一种简单的数据存储语言,使用一系列简单的标记来描述. 一.SAX解析 即Simple API for XML,以事件的形式通知程序,对Xml进行解析. 1.首先在Web ...

  8. c++ 全局变量初始化的一点总结

    注意:本文所说的全局变量指的是 variables with static storage,措词来自 c++ 的语言标准文档. 什么时候初始化 根据 C++ 标准,全局变量的初始化要在 main 函数 ...

  9. SNF开发平台WinForm之十四-站内发送系统信息-SNF快速开发平台3.3-Spring.Net.Framework

    1运行效果: 2开发实现: .组装站内信息发送实体对象. SNFService SNFService = new SNFService(); if (this.ucUser.SelectedIds ! ...

  10. 基于MSP430F413水果电池供电的低功耗时钟

      我最早接触MSP430时候,看到书的第一页就是一张水果电池的图片,一直以来想做一个低功耗的可以水果电池供电的系统,毕业之后的下半年选择MSP430F413单片机来画了一个低功耗的板子,一直没有调试 ...