gulp的简介以及使用方法
环境介绍:
pro环境:生产环境,面向外部用户的环境,连接上互联网即可访问的正式环境。
pre环境:灰度环境,外部用户可以访问,但是服务器配置相对低,其它和生产一样。
test环境:测试环境,外部用户无法访问,专门给测试人员使用的,版本相对稳定。
dev环境:开发环境,外部用户无法访问,开发人员使用,版本变动很大。
项目文件的部署
--|src (dev环境 开发环境)
--| html
--| css
--| images
--| js
--| js (直接写js代码的文件)
--| lib(类库 jquery)
--| plug(插件)
--| data
--| dist (pro)
--| html
--| css
--| images
--| js
gulp的目的
打包一个项目
gulp的作用
- 自动压缩JS文件
- 自动压缩CSS文件
- 自动合并文件
- 自动编译sass es6
- 自动压缩图片
- 自动刷新浏览器
gulp的使用
- gulp依赖于node环境
- 在全局安装gulp环境,说明机器上可以运行gulp
- cnpm install gulp@3.9.1 -g
- 在每个gulp项目 依赖gulp
- 在项目开始之前先初始化 package.json文件 , 命令 : cnpm init -y (全局安装)
- 注意 : cnpm install [包] --save 装生产环境依赖
- 注意 : cnpm install [包] --save-dev 装开发环境依赖
gulp的配置
在项目根目录下创建一个js文件 , 文件名称gulpfile.js gulp的配置文件
//引入模块
const gulp = require('gulp'); //异步执行:文件的转存 : 把src/html里面的index.html 转存到 dist/html/
gulp.task('copyfile',() => {
//文件的转存
//找到文件所在的路径
gulp
//执行命令 : gulp copyfile
.src('./src/html/index.html')
//转存
.pipe(gulp.dest('./dist/html'))
})
gulp指令
task() 创建gulp任务
参数1 ; 任务的名称
参数2 : 当前任务依赖的其他任务 ['任务1','任务2']
参数3 : 回调函数 当前任务所执行的代码
src() 找到文件的路径
pipe() 管道函数
dest() 文件的转存
watch() 监听
参数1 : 监听哪些文件发生变化
参数2 : 文件变化的时候执行哪些任务 ['任务1','任务2]
监测
扩展src匹配
单个文件 : "./src/js/1.js"
匹配所有文件 : " * " ./src/*.js src下所有的js文件
匹配0个或多个子文件夹 "**"
src/**/*.js src下面的0个或者多个子文件夹里的js文件
匹配多个属性 : {}
src/*.{jpg,png,gif} src下面所有的jpg png gif
gulp 拷贝文件
const gulp = require('gulp');
文件的转存 : 把src/html里面的index.html 转存到 dist/html/
gulp.task('marge',() => {
//文件的转存
//找到文件所在的路径
gulp
.src('./dist/css/*')
//转存
.pipe(gulp.dest('./dist/marge'))
})
gulp 图片的压缩
const imgmin = require('gulp-imagemin');
第一次压缩的命令:cnpm install gulp-imagemin --save-dev
gulp.task('imgMin',() => {
gulp
//路径的查找
.src('./src/images/*.png')
.pipe(imgmin()) //执行压缩
.pipe(gulp.dest('./dist/images'))
})
添加浏览器前缀
npm install --save-dev gulp-autoprefixer
gulp js文件压缩
const jsmin = require('gulp-uglify');
第一次压缩:cnpm install gulp-uglify --save-dev
//js压缩
gulp.task('jsMin',() => {
gulp
.src('./src/js/js/*.js')
.pipe(jsmin()) //js压缩
.pipe(gulp.dest('./dist/js'))
})
gulp css文件压缩
const cssmin = require('gulp-clean-css');
第一次命令:cnpm install gulp-clean-css --save-dev
//css文件的压缩
gulp.task('cssMin',() => {
gulp
.src('./src/css/*.css')
.pipe(cssmin())
.pipe(gulp.dest('./dist/css'))
})
gulp文件的合并
const concat = require('gulp-concat');
第一次命令 : cnpm install gulp-concat --save-dev
//文件的合并
gulp.task('conCat',() => {
gulp
.src('./src/js/js/{demo1,demo2}.js')
.pipe(concat('all.js')) //并的文件的名称
.pipe(jsmin())
.pipe(gulp.dest('./dist/js'))
})
es6转义
es6代码不能直接压缩 要先转义 再压缩
const es6 = require('gulp-babel');
第一次命令 : cnpm install --save-dev gulp-babel @babel/core @babel/preset-env
//es6编译
gulp.task('ES6',() => {
gulp
.src('./src/js/js/demo1.js')
.pipe(es6({
presets: ['@babel/env']
}))
.pipe(gulp.dest('./dist/js'))
})
gulp 添加浏览器前缀
const autofixer = require('gulp-autoprefixer');
第一次命令 : cnpm install gulp-autoprefixer --save-dev
var gulp = require("gulp"); //引入gulp
var autoprefixer = require("gulp-autoprefixer"); //引入插件
//gulp autoFx 自动添加css浏览器兼容前缀,并将添加后的最终.css文档保存在dist文件夹中
gulp.task("autoFx",function(){
gulp.src("*.css")
.pipe(autoprefixer())
.pipe(gulp.dest("dist/"))
})
gulp 开启服务
gulp.task('server',() => {
serverstart.server({
//路径
root : './',
port : 8888,
livereload : true
})
})
npm install --save-dev gulp-webserver
gulp.task('webserver',() => {
gulp.src('./src')
.pipe(webserver({
livereload : true,
proxies:[
{
source : ''
target : ""
}
]
}))
})
出口任务
gulp.task('default',['imgmin','jsmin','cssmin'])
watch封装
gulp.task('ddd',() => {
// return watch('./src/css/style.css',() => {
// gulp.start('cssMin');
// })
gulpWatch('./src/css/style.css','cssMin')
gulpWatch('./src/css/style.css','cssMin')
gulpWatch('./src/css/style.css','cssMin')
gulpWatch('./src/css/style.css','cssMin')
gulpWatch('./src/css/style.css','cssMin')
gulpWatch('./src/css/style.css','cssMin')
})
//监听多个文件的变化,执行多个任务
//封装起来
function gulpWatch(src,task){
return watch(src,() => {
gulp.start(task)
})
}
gulp的简介以及使用方法的更多相关文章
- Gulp.js简介
Gulp.js简介 我们讨论了很多关于怎么减少页面体积,提高重网站性能的方法.有些是操作是一劳永逸的,如开启服务器的gzip压缩,使用适当的图片格式,或删除一些不必要的字符.但有一些任务是每次工作都必 ...
- NetCat简介与使用方法
精品学习网考试频道小编应广大考生的需要,特为参加考试的考生策划了“NetCat简介与使用方法”专题等有关资料,供考生参考! 在入侵中它是最经典的工具之一 ,NetCat被所有的网络安全爱好者和研究者称 ...
- Gulp安装流程、使用方法及cmd常用命令导览
Gulp安装流程.使用方法及CMD常用命令导览 来自前端小白的gulp及周边知识学习总结 一.名词介绍: Npm--node包管理工具 一开始我不理解,包管理工具是什么鬼.后来用到的gulp也好,gu ...
- PHP Socket(套接字连接)扩展简介和使用方法
PHP socket扩展是基于流行的BSD sockets,实现了和socket通讯功能的底层接口,它可以和客户端一样当做一个socket服务器. 使用这些函数时请注意,虽然他们中有很多和C函数同名的 ...
- $ gulp watch 运行出错解决方法
$ gulp watch 运行出错解决方法 $ gulp watch 如果你出现了如下报错信息: gulp-notify: [Laravel Elixir] Browserify Fail ...
- nc之一:NetCat简介与使用方法
精品学习网考试频道小编应广大考生的需要,特为参加考试的考生策划了“NetCat简介与使用方法”专题等有关资料,供考生参考! 在入侵中它是最经典的工具之一 ,NetCat被所有的网络安全爱好者和研究者称 ...
- “流式”前端构建工具——gulp.js 简介
Grunt 一直是前端领域构建工具(任务运行器或许更准确一些,因为前端构建只是此类工具的一部分用途)的王者,然而它也不是毫无缺陷的,近期风头正劲的 gulp.js 隐隐有取而代之的态势.那么,究竟是什 ...
- 前端自动化工具 -- Gulp 使用简介
gulp是基于流的前端自动化构建工具. 之前也谈到了 grunt的用法,grunt其实就是配置+配置的形式. 而gulp呢,是基于stream流的形式,也就是前一个函数(工厂)制造出结果,提供后者使用 ...
- git简介及使用方法
一.git简介及安装1.git简介 Git 是用于 Linux 内核开发的版本控制工具.与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持, ...
随机推荐
- PHP程序员技术职业生涯,你是如何规划的?
职业规划是这样的 看到很多PHP程序员职业规划的文章,都是直接上来就提Linux.PHP.MySQL.Nginx.Redis.Memcache.jQuery这些,然后就直接上手搭环境.做项目,中级就是 ...
- Python--day20--模块的导入
1,模块的导入步骤: 2,,给文件起别名的用处: 重命名之后,原来的名字就不能用了 3,虽然这样写可以,但是不推荐,代码可读性不强,以后代码的修改成本也增加: 4,模块的导入顺序: 5,导入变量名的两 ...
- NLP --- 条件随机场CRF详解 重点 特征函数 转移矩阵
上一节我们介绍了CRF的背景,本节开始进入CRF的正式的定义,简单来说条件随机场就是定义在隐马尔科夫过程的无向图模型,外加可观测符号X,这个X是整个可观测向量.而我们前面学习的HMM算法,默认可观测符 ...
- 智课雅思短语---三、unshakable duty
智课雅思短语---三.unshakable duty 一.总结 一句话总结:不可推卸的义务 unshakable duty 1.satisfy/ meet the needs of…? 满足需求 2. ...
- C# winforms 输入颜色转换颜色名
本文告诉大家如何输入颜色,如0xFFFF8000转换为 Orange 在 winforms 程序 可以使用下面代码转换 public static class HexColorTranslator { ...
- 【codeforces 761B】Dasha and friends
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- 【js】vue 2.5.1 源码学习 (九) 响应数组对象的变
大体思路(八) 本节内容: 1.Observe 如何响应数组的变化 代理原型 数组变异方法 shell cacheArrProto methods 新添加的数组需要加到显示系统里面,拦截 push等的 ...
- 一图理解vue生命周期
博客园上传图不太清晰,可以查看我的CSDN https://blog.csdn.net/jiaoshuaiai/article/details/90046736 感谢: https://segment ...
- javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
* offsetWidth 水平方向 width + 左右padding + 左右border-width * offsetHeight 垂直方向 height + 上下padding + 上下bor ...
- 2018.11.23 浪在ACM 集训队第六次测试赛
2018.11.23 浪在ACM 集训队第六次测试赛 整理人:刘文胜 div 2: A: Jam的计数法 参考博客:[1] 万众 B:数列 参考博客: [1] C:摆花 参考博客: [1] D:文化之 ...