gulp打包详解

摘要:
gulp的作用删除文件中冗余的内容,压缩文件,减小文件体积实际项目中运行的都是压缩完成以后的文件减小加载响应时间gulp打包压缩对象html,css,js,sass,webserver音频,图片,插件等正常情况下都是打包完成的,直接移动到dist文件中就可以服务器食欲gulp一起绑定执行的,执行的是打包压缩好的程序文件gulp执行过程所有执行步骤必须严格遵守,尤其是语法规范必须严格执行    1、

gulp的作用

  1. 删除文件中冗余的内容,压缩文件,减小文件体积
  2. 实际项目中运行的都是压缩完成以后的文件
  3. 减小加载响应时间

gulp打包压缩对象

  1. html,css,js,sass,webserver
  2. 音频,图片,插件等正常情况下都是打包完成的,直接移动到dist文件中就可以
  3. 服务器食欲gulp一起绑定执行的,执行的是打包压缩好的程序文件

gulp执行过程

所有执行步骤必须严格遵守,尤其是语法规范必须严格执行

    1、下载全局gulp

npm i -g gulp

    2、创建项目文件

源文件src:    

pages    存储html文件
css      存储css文件
sass     存储sass文件
images    存储图片
js       存储js文件
plug     存储插件

压缩文件 dist:     

将压缩好的文件存放在dist中
文件名称与原文件名称保持一致
实际项目中为了保持文件名称路径一致,不添加多余的文件名后缀min等

    3、文件初始化 

整个项目第一次执行
        npm init -y
实际项目中,或者下载git中的项目
下载 package.json 文件,到项目文件夹中
package.json 中 存储了所有依赖包的信息 以及 依赖包的相关设定
在项目路径下,执行 npm install 会自动安装依赖包

    4、如果是第一次执行项目,需要逐一安装依赖包

如果是已经有完整的 package.json
将 package.json 复制拷贝到指定的文件夹中,执行 npm install 会自动安装记录的依赖包      

安装依赖包 局部/项目依赖包
npm i gulp gulp          依赖包
npm i gulp-cssmin          css压缩依赖包
npm i gulp-autoprefixer       css添加前缀依赖包
npm i gulp-uglify          ES5语法压缩依赖包
npm i gulp-babel          其他语法转化ES5语法规范
npm i @babel/core         与 gulp-babel 配合的依赖包
npm i @babel/preset-env
npm i htmlmin           html压缩依赖包
npm i webserver          服务器依赖包
npm i del           删除文件依赖包

npm i sass           sass文件依赖包

创建gulpfile.js文件,定义gulp打包压缩程序规范

  1、加载所有依赖包

@babel/core 与 @babel/preset-env 是与gulp-babel配合使用的只需下载,不需要加载。

  2、制定打包规范

  a 、css打包规范

constcssHandler=function(){
returngulp.src('./src/css/*.css')
.pipe(autoprefixer())
.pipe(cssmin())
.pipe(gulp.dest('./dist/css'))
}

注意:1,先添加前缀,再执行打包
2,设定浏览器兼容版本,在package.json中设定
"browserslist":[
"last2versions",
"IOS>7",
"FireFox>20"
]

b 、 js打包规范

constjsHandler=function(){
returngulp.src('./src/js/*.js')
.pipe(babel({presets:['@babel/env']}))
.pipe(uglify())
.pipe(gulp.dest('./dist/js'))
}

注意:1,babel({presets:['@babel/env']})以对象的形式定义参数
2,先将其他语法规范,转化为ES5语法规范,再执行打包压缩

c 、 html打包压缩规范

consthtmlHandler=function(){
returngulp.src('./src/pages/*.html')
.pipe(htmlmin({
removeAttributeQuotes:true,    //删除属性上的双引号
removeComments:true,   //删除注释内容
collapseBooleanAttributes:true,  //删除布尔属性的属性值
collapseWhitespace:true,  //删除标签之前的空格
minifyCSS:true,    //压缩html文件中的css程序
minifyJS:true,    //压缩html文件中的js程序
//虽然可以压缩HTML中的js和css,但是压缩执行的不完美
//实际项目中,不要有内部,js和css,都要写成外部文件形式
}))
.pipe(gulp.dest('./dist/pages'))
}
注意:1,htmlmin()中以对象的形式定义参数

d 、图片等不需要打包压缩的,就直接移动至dist文件夹

constimgHandler=function(){
returngulp.src('./src/images/*.*')
.pipe(gulp.dest('./dist/images'))
}

e,设定服务器执行规范调用执行打包压缩好的文件

constwebserverHandler=function(){
returngulp.src('./dist')//指定的是运行文件的目录,也就是要运行的压缩的文件,所在的文件夹
.pipe(webserver({
host:'127.0.0.1',//主机域名,当前就是127.0.0.1或者localhost
port:'8080',//定义监听端口
livereload:true,//执行热启动,如果程序代码,改变,自动刷新页面,不用重启服务器,不用手动刷新页面
open:'./pages/index.html',//默认打开的网页,输入127.0.0.1:8080地址就会直接打开的页面
//默认的地址是,gulp.src()设定的文件夹位置,也就是默认是dist压缩文件夹所在的位置,执行的也是压缩之后的文件
}))
}
注意:1,gulp.src('./dist')设定执行的打包压缩文件,存储的文件夹路径
2,open设定服务器启动之后,执行的默认页面
设定相对路径的起始位置,是gulp.src()设定的文件夹位置
3,livereload:true,热启动页面样式等更新,不用手动刷新,服务器会自动刷新

    f、制定sass的编译打包压缩规范

constsassHandler=function(){
returngulp.src('./src/sass/*.scss')
.pipe(sass())//将sass编译为css
.pipe(autoprefixer())//之后就是执行css的打包压缩规范
.pipe(cssmin())
.pipe(gulp.dest('./dist/css'))
}

设定监听程序

a,设定删除规范,也就是每次执行新的打包压缩之前,先删除原始的打包内容
constdelHandler=function(){
returndel(['./dist']);
}
b,设定监听规范,指定监听的文件文件夹,如果出现修改,会自动重新打包压缩
constwatchHandler=function(){
gulp.watch('./src/css/*.css',cssHandler);
gulp.watch('./src/js/*.js',jsHandler);
gulp.watch('./src/pages/*.html',htmlHandler);
gulp.watch('./src/images/*.*',imgHandler);
}
注意:1,gulp.watch()第一个参数是,监听的文件夹文件路径
gulp.watch()第二个参数是,监听文件内容发生改变时,执行的打包规范
2,必须要定义的打包规范的函数名称

c,设定导出默认执行程序
module.exports.default=gulp.series(
delHandler,
gulp.parallel(cssHandler,jsHandler,htmlHandler,imgHandler),
webserverHandler,
watchHandler,
)

注意:1,设定module.exports.default之后,再执行gulp,只要在路径下输入gulp就可以了
2,gulp.series()按照顺序执行设定的程序,顺序必须正确
gulp.parallel()是同时执行所有设定的程序
顺序一定是:先删除之前打包压缩的文件
在重新压缩所有需要打包压缩,移动的文件
开启服务器
执行监听

免责声明:文章转载自《gulp打包详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JQuery实现省市区三级联动CPP常用库函数以及STL下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

gulp运行步骤

一、运行→输入cmd→跳出命令窗口二、cd D: 敲回车进入D盘,cd www 进入项目路径 cd mygulp三、执行 cnpm install gulp --save-dev 命令 (初始化安装gulp)四、执行cnpm init 配置package.json五、在项目根目录下创建一个名为 gulpfile.js 的文件六、执行gulp...

Gulp解决发布线上文件(CSS和JS)缓存问题

Gulp解决发布线上文件(CSS和JS)缓存问题     本文的缘由:目前经常线上发布文件后要不断的刷新页面及过很长时间,页面上的CSS和JS文件才能生效,特别对于目前做微信商城的时候,微信内置的浏览器缓存非常的严重,之前我们经常是在文件后面加上时间戳的方式来解决线上发布后的缓存问题,但是在微信浏览器内并不生效;因此我们需要改变文件名的方式来解决缓存的问题...

Scss与Less区别

Scss与Less区别 一. Sass/Scss、Less是什么? Sass (Syntactically Awesome Stylesheets)是一种动态样式语言,Sass语法属于缩排语法,比css比多出好些功能(如变量、嵌套、运算,混入(Mixin)、继承、颜色处理,函数等),更容易阅读。 Sass与Scss是什么关系? Sass的缩排语法,对于写惯...

gulp实现公共html代码复用

在开发网站的时候,尤其是类似于官网这样的项目,顶部都会有一个导航栏,底部会有一些其他信息,而这两个部分在每一个页面都是有的。我们不可能在每个html页面都写一遍,这样也不便后期维护等操作,所以可以把顶部导航和底部这两块的html代码单独写在两个html文件里:header.html和footer.html,然后在每个html文件只需要在适当的位置引入公共部...

npm + gulp + scss + 项目架构

原创:格尔尼卡ぃ 在此声明,每部分红色标注为文件的变化,并且都带有关键性的注释语句。希望能给大家带来帮助。 一、npm讲解 https://www.npmjs.com.cn/ NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种: 允许用户从NPM服务器下载别人编写的第三方包到本地使用。 允许...

gulp打包

https://blog.csdn.net/j_bleach/article/details/53047467 https://www.cnblogs.com/flyingzeng/p/10536690.html https://zhuanlan.zhihu.com/p/162049537 https://www.npmjs.com/package/gul...