Gulp-前端进阶A-2
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的更多相关文章
- 我在阿里这仨月 前端开发流程 前端进阶的思考 延伸学习的方式很简单:google 一个关键词你能看到十几篇优秀的博文,再这些博文中寻找新的关键字,直到整个大知识点得到突破
我在阿里这仨月 Alibaba 试用期是三个月,转眼三个月过去了,也到了转正述职的时间.回想这三个月做过的事情,很多很杂,但还是有重点. 本文谈一谈工作中遇到的各种场景,需要用到的一些前端知识,以及我 ...
- [前端进阶课] 构建自己的 webpack 知识体系
webpack webpack 最出色的功能之一就是,除了 JavaScript,还可以通过 loader 引入任何其他类型的文件. Webpack 核心概念: Entry(入口):Webpack 执 ...
- gulp 前端自动化工具
一开篇 在前端开发的过程中,我们经常会碰到压缩.合并.图片script 等,于是就有了gulp 前端自动化构建工具,它能帮你在前端开发中,节省时间. 1,安装 node.js 因为gulp 构建工具是 ...
- gulp前端自动化工作流
gulp前端自动化工作流 为什么要有自动化的流程? 在我们的开发过程中有大量的重复操作 DRY Don't repeat yourself 开发人员的精力应放在哪? 创造,新的一切前端开发的编译操作 ...
- gulp 前端构建工具入门
gulp 前端构建工具入门 标签(空格分隔): gulp 1. 安装gulp npm i -g gulp 2. 创建gulp项目 2.1 Hello world 使用npm init初始化项目文件夹. ...
- gulp前端自动化入门
一.从零开始搭建gulp前端自动化 1.首先安装nodejs 2.npm init 初始化 生成package.json 2.1 可以选装cnpm cnpm是淘宝提供的服务 安装:命令提示符执行npm ...
- gulp 前端构建工具使用
gulp 前端构建工具使用 1.新建一个web h5项目 2.准备好gulpfile.js文件 (1)下载链接:https://pan.baidu.com/s/116J-BaYOMRzeJW3i_J ...
- 前端进阶必读:《JavaScript核心技术开发解密》核心提炼二
前言 最近读勒基本关于前端的数据<JavaScript核心技术开发解密>,<webpack从入门到进阶>...这几本书帮助到我更好的理解JS.webpack在前端技术领域中的作 ...
- 前端进阶之认识与手写compose方法
目录 前言:为什么要学习这个方法 compose简介 compose的实现 最容易理解的实现方式 手写javascript中reduce方法 redux中compose的实现 参考文章 最后 前言:为 ...
- 前端进阶(1)Web前端性能优化
前端进阶(1)Web前端性能优化 Web前端性能优化, 不仅能够改善站点的用户体验,并且能够节省相当的资源利用.下面将从1)服务器.2)html内容.3)css. 4)javascript. 5)图片 ...
随机推荐
- wav 转换到 flac
参考自:http://so.trust.blog.163.com/blog/static/17188620020127197618621/ wav 无损无压缩: flac无损压缩 将 wav 转换到 ...
- [转]C++学习–基础篇(书籍推荐及分享)
C++入门 语言技巧,性能优化 底层硬货 STL Boost 设计模式 算法篇 算起来,用C++已经有七八年时间,也有点可以分享的东西: 以下推荐的书籍大多有电子版.对于技术类书籍,电子版并不会带来一 ...
- 享元模式及C++实现
享元模式(flyweight) flyweight是轻量级的意思,中文这边翻译成享元,更容易让人理解一些. 享元模式是为了应对大量细粒度对象重复的问题.程序中存在大量细粒度的对象,每次要使用时都必须创 ...
- Windows Storage Server 2008 R2 Standard(64位)之ASM(Automated Storage Manager)管理
一.服务器管理器之LUN管理 服务器管理器的LUN管理,右键可删除(注意别删了系统分区在的LUN) 二.ASM(Automated Storage Manager) view 高级信息,请不要修改相关 ...
- 装B必备词汇
这个页面用来记录遇到的所有高大上的词汇,本词汇集仅限于装B圈交流和讨论. 一致性 hash 算法(consistent hashing) http://blog.csdn.net/sparkliang ...
- SNF开发平台WinForm之二-开发-单表表单管理页面-SNF快速开发平台3.3-Spring.Net.Framework
2.1运行效果: 2.2开发实现: 2.2.1 这个开发与第一个开发操作步骤是一致的,不同之处就是在生成完代码之后,留下如下圈红程序,其它删除. 第一个开发地址:开发-单表表格编辑管理页面 http: ...
- 关于js中的几个小问题。
问题1: 使用连续赋值后面的变量会成为全局对象的一个属性,并且这个属性可以通过delete删除. 原因:赋值语句是从右往左执行的,我们将10赋值给了c,但是c此时还声明,接着把c的返回值赋值给了b,但 ...
- Sass学习之路:注释、变量以及导入
前言 由于.sass不兼容CSS代码,所以以下内容完全使用.scss的语法. Sass注释 Sass中除了提供CSS中的标准注释之外,还提供了一种静默注释: /* 我是标准注释 */ // 我是静默注 ...
- Hadoop第10周练习—Mahout部署及进行20newsgroup数据分析例子
:搭建Mahout环境 :运行20newsgroup 内容 运行环境说明 1.1 硬软件环境 线程,主频2.2G,6G内存 l 虚拟软件:VMware® Workstation 9.0.0 buil ...
- 美了美了!22款精美的 iOS 应用程序图标模板
22款制作精美的 iOS 应用程序图标设计作品,遵循图形设计的现代潮流,所有图标都非常了不起,给人惊喜.通过学习这些移动应用程序图标,设计人员可以提高他们的创作,使移动用户界面看起来更有趣和吸引人. ...