一个完整的项目中,需要的基本gulp
一个完整的项目需要使用gulp的多种功能,包括——
(1)加载各种需要的插件
var concat=require('gulp');
var clean=require(''gulp);
等等。需要的插件放在指定的module文件夹下面,然后再修改文件中修改。
(2)启动任务和完成部署任务
我们想要在文件进行操作之前,首先将文件的环境弄好,例如,想把a放在一个目录下,但是这个目录下面有着很多的不需要的文件,所以我们首先需要将这些文件删除——
gulp.task('cleanTask',function(){
return gulp.src(dist).pipe(clean())
})
注意到里面的dist是一个变量,所以在这之前我们还必须对变量进行声明——
var dist=__dirname+'/dist'
代表根目录下的dist文件
然后执行更新操作:
gulp.task("default",['release'],function(){
gulp.run('autoupdateSource')
});
执行这个会自动执行,autoupdateSource任务,而执行这个之前,还会先执行release。
gulp.task("release",function(){
gulp.run('html');
gulp.run('transformless');
gulp.run('img');
gulp.run('js");
})
这个任务会依次执行里面的其他4个任务,目的是将src目录下的所有文件全部拷贝同步到dist文件下面。
gulp.task("html",function(){
gulp.src("src/*.html") //找到原本的路径
.pipe(minifyHtml()) //对html进行压缩工作,这是需要插件的
.pipe(gulp.dest(dist)) //目标目录
.pipe(browserSync.reload({stream:true}));//当监听到html文件发生变动时,执行同步更新操作
gulp.task('img',function(){
gulp.src('src/**/*',option)//以option,为根目录,将文件连同文件夹完整搬运过去,若没有这个option,便会导致所有文件全部放在路径下面,失去层次。为此,这个option也需要事前声明
.pipe(gulp.dest(dest))
})
})
var option = {base: 'src'}; //基准目录从src目录开始
gulp.task("js", function(){
gulp.src("src/js/**/*", option).pipe(gulp.dest(dist))
})
以及,这个部分重要的less部分——
gulp.task('transformLess',function(){
gulp.src('src/style/**/*.less',option)//选择源文件目录
.pipe(less()) //将文件夹下面的less文件转换成css文件,浏览器不识别less,且这个时候收获的并不是一个css而是多个转化而成的css文件。
.pipe(autoprefixer()) //自动匹配前缀,轻松解决flex的兼容问题
.pipe(gulp.dest(dest)) //目的目录,这个操作会将css文件全部输送过去,注意,这里是【多个css文件】
.pipe(concat('index_all.css')) //将多个css文件合并
.pipe(minfy()) //对css进行压缩,一个减小体积,另一个增大读取难度,因为并不是给用户看的
.pipe(gulp.dest(dist+'/style')) //转换好的【一个】css文件放在对应目录下
.pipe(browserSyn.reload({stream:true})) //和浏览器保持同步更新
})
到此为止,我们完成了——文件的搬运和转换和浏览器的同步更新,接下来就是文件自身的同步更新,即——当我们修改工作区间的文件,会同时更改发布区的文件。
gulp.task('autoUpdateSource',function(){
gulp.watch('src/style/**/*.less',['transformLess']) //当目录下的所有less发生变化的时候,执行后面的任务,也就是上面写的同步更新less操作
gu;p.watch(''src/*.html",[''html"],function(){ //,先执行html任务,当目录下的html文件发生变化的时候,执行后面的函数
})
})
最后,则是窗口自动启动等问题,这些其实都是默认任务下的东西——
原来的default任务是这样的
gulp.task('cleanTask',function(){
return gulp.src(dist).pipe(clean())
})
而事实应该是这个样子的——
gulp.task('cleanTask',function(){
if(yargs.s){
gulp.start('sever')
}
if(yargs.w){
gulp.start('watch');
}
还记得我们使用git打开时输入的代码吗?
node node_modules/gulp/bin/gulp.js
后面加上-s或者-w就可以执行上面对应的任务——
node node_modules/gulp/bin/gulp.js -s
gulp.task('server',function(){
yargs.p=yargs.p||8080; //服务器端口
broswerSyn.init({
server:{
baseDir:"./dist" //文件打开路径,意味着打开8080端口下的dist文件夹
},
port:yars.p,
startPath:'./' //最终打开文件路径,在上述路径下面添加这里的路径,寻找index.html打开
})
})
至此,配置文件全部结束,完结撒花——————
我会将全部代码放在后面的。
return gulp.src(dist).pipe(clean())
})
一个完整的项目中,需要的基本gulp的更多相关文章
- asp.netmvc 三层搭建一个完整的项目
接下来用 asp.net mvc 三层搭建一个完整的项目: 架构图: 使用的数据库: 一张公司的员工信息表,测试数据 解决方案项目设计: 1.新建一个空白解决方案名称为Company 2.在该解决方案 ...
- 如何基于Spring Boot搭建一个完整的项目
前言 使用Spring Boot做后台项目开发也快半年了,由于之前有过基于Spring开发的项目经验,相比之下觉得Spring Boot就是天堂,开箱即用来形容是绝不为过的.在没有接触Spring B ...
- 写给笨蛋徒弟的学习手册(1)——完整C#项目中各个文件含义
Bin 目录用来存放编译的结果,bin是二进制binrary的英文缩写,因为最初C编译的程序文件都是二进制文件,它有Debug和Release两个版本,分别对应的文件夹为bin/Debug和bin/R ...
- 分享一个集成在项目中的REST APIs文档框架swagger
1 为什么是使用swagger? 1-1 当后台开发人员开发好接口,是不是还要重新书写一份接口文档提给前端人员,当然对于程序员最不喜欢的就是书写文档(当然文档是必须的,有利于项目的维护) 1-2 当后 ...
- 【Android】 分享一个完整的项目,适合新手!
写这个app之前是因为看了头条的一篇文章:http://www.managershare.com/post/155110,然后心想要不做一个这样的app,让手机计算就行了.也就没多想就去开始整了. ...
- (续)使用Django搭建一个完整的项目(Centos7+Nginx)
django-admin startproject web cd web 2.配置数据库(使用Mysql) vim web/settings.py #找到以下并按照实际情况修改 DATABASES = ...
- 【vue2.x基础】用npm起一个完整的项目
1. 安装vue npm install vue -g 2. 安装vue-cli脚手架 npm install vue-cli -g 3. 安装webpack npm install webpack ...
- 一个完整的机器学习项目在Python中的演练(二)
大家往往会选择一本数据科学相关书籍或者完成一门在线课程来学习和掌握机器学习.但是,实际情况往往是,学完之后反而并不清楚这些技术怎样才能被用在实际的项目流程中.就像你的脑海中已经有了一块块"拼 ...
- 一个项目中:只能存在一个 WebMvcConfigurationSupport (静态文件失效之坑)
一个项目中:只能存在一个 WebMvcConfigurationSupport 在一个项目中WebMvcConfigurationSupport只能存在一个,多个的时候,只有一个会生效. 静态文件访问 ...
随机推荐
- ZUFE 1035 字符宽度编码(字符串)
Time Limit: 1 Sec Memory Limit: 128 MB Description 你的任务是编写一个程序实现简单的字符宽度编码方法.规则如下:将任何2~9个相同字符的序列编码成2 ...
- IAR和Keil文件包含路径设置
在模块化编程时,为一个模块单独设置头文件是必不可少的. 在两款主流编译器中,在引用模块函数时候,包含头文件路径是必须的,那么设置文件路径的准确性就显得尤为重要. 否则,编译器会报错,无法打开某某头文件 ...
- python 实现excel转化成json文件
1.准备工作 python 2.7 安装 安装xlrd -- pip install xlrd 2. 直接上代码 import xlrd from collections import Ordered ...
- POJ 1696 Space Ant 极角排序(叉积的应用)
题目大意:给出n个点的编号和坐标,按逆时针方向连接着n个点,按连接的先后顺序输出每个点的编号. 题目思路:Cross(a,b)表示a,b的叉积,若小于0:a在b的逆时针方向,若大于0a在b的顺时针方向 ...
- 本篇内容简要介绍BASE64、MD5、SHA、HMAC几种加密算法。
BASE64编码算法不算是真正的加密算法. MD5.SHA.HMAC这三种加密算法,可谓是非可逆加密,就是不可解密的加密方法,我们称之为单向加密算法.我们通常只把他们作为加密的基础.单纯的以上 ...
- Ant 删除目录 vs 清空目录
Apache Ant 可以用下面的命令来删除目录 <delete dir="${lucene.dir}"/> 但是这会删除整个目录,而我现在只想清空目录内的所有文件和子 ...
- 能加载文件或程序集“XXX”或它的某一个依赖项,系统找不到指定的文件
能加载文件或程序集“XXX”或它的某一个依赖项,系统找不到指定的文件 http://blog.csdn.net/pplcheer/article/details/7796211 做项目总是遇到各种的问 ...
- oracle账户锁定解决方法
今天进使用orcle中,发现系统中,system账户登录里提示账户被锁定 ,后来查了查资料,问题解决,方法如下: Microsoft Windows [版本 5.2.3790] (C) 版权所有 19 ...
- linux时间同步,ntpd、ntpdate
linux时间同步,ntpd.ntpdate 在Windwos中,系统时间的设置很简单,界面操作,通俗易懂.而且设置后,重启,关机都没关系.系统时间会自动保存在Bios的时钟里面,启动计算机的时候,系 ...
- IDEA类文件不编译问题
用IDEA的人遇到过类文件上有个小叉吗? 1.在 .gitignore 里面把这个文件去掉 2.setting->builder->compiler->子目录 去掉不编译的文件