如果希望对在静态页面中引入的相关资源进行压缩(比如:CSS,JavaScript,图片等),可以使用Gulp实现。

当然,还可以使用其他打包工具,比如:Grunt,Webpack等等。

Gulp是什么

Gulp是一个用于对静态Web资源进行打包的工具,可以实现对静态资源的压缩,本质上是一个npm模块。

在正式使用Gulp之前,需要先安装并配置好Node.js环境。

# 查看node.js版本
node --version
v16.15.1 # 查看npm版本
npm --version
8.11.0 # 全局安装gulp和gulp-cli命令行工具
npm install --global gulp
npm install --global gulp-cli # 查看gulp版本
gulp -version
CLI version: 2.3.0
Local version: 4.0.2

如何使用Gulp

Gulp是一个流式构建工具,具体要执行的任务可以在项目根目录下新建一个名叫“gulpfile.js”的文件,并在其中进行配置。

// 引入gulp模块
var gulp = require('gulp'); gulp.task('task1', function() {
// 这里是任务代码
});

然后执行:gulp task1即可。

实际上,Gulp是一个插件化的工具,配置文件中的各个任务都是通过指定的插件实现的,当需要使用某个插件时需要先安装该插件。

可以在这里搜索指定的Gulp插件。

应用实践

如下示例将实现对静态网站中使用CSS,JavaScript和图片资源进行压缩,并最终打包到指定目录。

在项目根目录下安装对应插件:

# 使用gulp-uglify压缩js
npm install --save-dev gulp-uglify
# 使用gulp-clean-css压缩css
npm install --save-dev gulp-clean-css
# 使用gulp-smushit压缩图片
npm install --save-dev gulp-smushit
# 使用gulp-htmlmin压缩html
npm install --save-dev gulp-htmlmin

在项目根目录下编辑“gulpfile.js”配置文件:

const gulp = require('gulp');
const uglify = require('gulp-uglify');
const cleancss = require('gulp-clean-css');
const smushit = require('gulp-smushit');
const htmlmin = require('gulp-htmlmin') // 压缩js
gulp.task('minscript', function() {
return gulp.src('./assets/js/*.js')
.pipe(uglify())
.pipe(gulp.dest('./dist/assets/js'));
}) // 压缩css
gulp.task('mincss', function() {
return gulp.src('./assets/css/*.css')
.pipe(cleancss())
.pipe(gulp.dest('./dist/assets/css'));
}) // 压缩html
gulp.task('minhtml', function() {
return gulp.src('./*.html')
.pipe(htmlmin({
removeComments: true, //清除HTML注释
collapseWhitespace: true, //压缩HTML
collapseBooleanAttributes: true, //省略布尔属性的值 <input checked="true"/> ==> <input checked />
removeEmptyAttributes: true, //删除所有空格作属性值 <input id="" /> ==> <input />
removeScriptTypeAttributes: false, //删除<script>的type="text/javascript"
removeStyleLinkTypeAttributes: false, //删除<style>和<link>的type="text/css"
minifyJS: true, //压缩页面JS
minifyCSS: true //压缩页面CSS
}))
.pipe(gulp.dest('./dist'));
}) // 压缩图片
gulp.task('minimg', function () {
return gulp.src('./assets/img/*.{jpg,png}')
.pipe(smushit())
.pipe(gulp.dest('./dist/assets/img'));
}); // 批量复制文件
gulp.task('copy', async function() {
gulp.src('./assets/fonts/*.*').pipe(gulp.dest('./dist/assets/fonts'));
gulp.src('./assets/json/*.json').pipe(gulp.dest('./dist/assets/json'));
gulp.src('./*.{png,ico}').pipe(gulp.dest('./dist'));
}) // 明确指定默认构建操作包含的任务,如果不指定默认构建任务,则需要以参数形式指定任务,如:gulp minscript mincss minhtml copy
module.exports.default = gulp.series(gulp.parallel('minscript','mincss','minhtml','minimg','copy'))

然后在项目根目录下执行:gulp即可完成打包动作,将相应资源打包到项目根目录下的dist目录中。

【参考】

https://blog.csdn.net/qq_43817164/article/details/118107169 Gulp入门

https://zhuanlan.zhihu.com/p/354233622 Gulp 使用gulp压缩JS

https://blog.csdn.net/weixin_45195200/article/details/115323006 Gulp 使用gulp压缩CSS

https://blog.csdn.net/weixin_45195200/article/details/115459128 Gulp 使用gulp压缩图片

https://blog.csdn.net/zhongguohaoshaonian/article/details/53213657 gulp教程之gulp-imagemin压缩图片

https://www.cnblogs.com/zlf1914/p/13144381.html gulp压缩html,css,js文件流程、监听任务、使用gulp创建服务器、同时运行多个任务、反向代理

https://www.jianshu.com/p/657143a3de37 前端工程化-自动化构建工具 Gulp 案例演示

https://blog.csdn.net/Mayflyingdancing/article/details/109215874 gulp-imagemin: Couldn‘t load default plugin

使用Gulp压缩静态资源的更多相关文章

  1. gulp之静态资源防缓存处理

    最近,因为校友网项目开始有些规模了.开始就要考虑对静态资源进行工程自动化的管理.一讲到前端的自动化工具,大家或许都会想到Grunt,Gulp,或者百度的FIS.这三个都有各自的特点,大家可以依据自己的 ...

  2. gulp管理静态资源缓存

    前端项目在版本迭代的时候,难免会遇到静态缓存的问题,明明开发的是ok的,但是一部署到服务器上,发现页面变得乱七八糟,这是由于静态缓存引起的. 从上面这张图片可以看出,浏览器加载css,js等资源时,s ...

  3. gulp下静态资源的合并、压缩、MD5后缀

    var gulp = require('gulp'); var RevAll = require('gulp-rev-all'); var uglify = require('gulp-uglify' ...

  4. Hexo瞎折腾系列(5) - 使用hexo-neat插件压缩页面静态资源

    为什么要压缩页面静态资源 对于个人博客来说,优化页面的访问速度是很有必要的,如果打开你的个人站点,加载个首页就要十几秒,页面长时间处于空白状态,想必没什么人能够忍受得了吧.我个人觉得,如果能把页面的加 ...

  5. gulp静态资源构建、压缩、版本号添加

    公司移动端商城使用前后分离方案,前台nginx静态文件,js使用requirejs模式,使用gulp压缩添加版本号时发现问题, 问题1.在公共的js配置中,引用的路径是写死的,缓存会一直存在. 解决方 ...

  6. Gulp:静态资源(css,js)版本控制

    为了防止客户端的静态资源缓存,我们需要每次更新css或js的时候,通过md5或时间戳等方式重新命名静态资源: 然后涉及到的html模板里的src也要做相应的修改,静态资源需要优化(压缩合并) 文件目录 ...

  7. gulp 自动化构建网站(版本号静态资源)

    前言 新的一年啦,感觉总是静不下心,用了一天的时间吧,算是对gulp 这个前端打包工具入门了,自己也写了demo,表示对这个稍微理解了吧, 当然还是有差距的啦,下面讲讲怎么用吧: 如何用 当然先去官网 ...

  8. 前后端分离+本地服务实时刷新+缓存管理+接口proxy+静态资源增量更新+各种性能优化+上线运维发布——gulp工作流搭建

    技巧集:http://www.gulpjs.com.cn/docs/recipes/ 其实无非就是利用各种gulp插件.node脚本对项目文件做各种IO操作,只是备忘,需要的话,还是自己重新写最合适. ...

  9. ASP.NET MVC 静态资源打包和压缩问题小记

    ASP.NET MVC 中有个 BundleConfig 用于静态资源的打包和压缩,我在使用的过程中遇到一些问题,现在做下总结,并给出具体的解决方案. 问题一:打包压缩后的 JavaScript 和 ...

  10. 前端静态资源版本更新与缓存之——gulp自动化添加版本号

    公司项目每次发布后,偶尔会有缓存问题,然后看了下gulp,发现gulp还能给js,css自动化添加版本号,可解决缓存的问题,所以自动化实现静态资源的版本更新才是正道.通过网上的资料试过了两种办法: 1 ...

随机推荐

  1. [转帖]SIMD+SSE+AVX

    http://home.ustc.edu.cn/~shaojiemike/posts/simd/   SIMD SIMD全称Single Instruction Multiple Data,单指令多数 ...

  2. [转帖]PostgreSQL 慢查询SQL跟踪

    https://www.cnblogs.com/VicLiu/p/12017704.html PostgreSQL 开启慢SQL捕获在排查问题时是个很有效的手段.根据慢SQL让我在工作中真正解决了实际 ...

  3. [转帖]jcmd命令详解

    1 基本知识 jcmd 是在 JDK1.7 以后,新增了一个命令行工具. jcmd 是一个多功能的工具,相比 jstat 功能更为全面的工具,可用于获取目标 Java 进程的性能统计.JFR.内存使用 ...

  4. [转帖]GC 日志

    https://www.xjx100.cn/news/188814.html?action=onClick 垃圾回收器的发展历史 1999年:随JDK1.3.1一起来的串行方式Serial GC(第一 ...

  5. [转帖]漏洞预警|Apache Tomcat 信息泄露漏洞

    http://www.hackdig.com/03/hack-953615.htm 棱镜七彩安全预警 近日网上有关于开源项目Apache Tomcat 信息泄露漏洞,棱镜七彩威胁情报团队第一时间探测到 ...

  6. [转帖]linux 调优各项监控指标小记

    https://z.itpub.net/article/detail/8A4E4E96522BD59D45AB5A4CA442EDB3 自开始负责生产环境部署,中间遇到了若干线上环境内存以及CPU的问 ...

  7. Linux上面Shell简单进行数值计算的办法

    1. 自己简单写了一个脚本 来计算 一个服务进程启动的耗时, 精度要求不高 10秒上下就可以. 在程序执行之前和之后的处理 在最前面设置一句time1=`date +%s`在末尾一句设置time2=` ...

  8. vscode搜索框不见了如何显示

  9. 【解决了一个小问题】在某个linux基础镜像中安装python特定的版本

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 在某个基础镜像中,安装了python3.6.但是一个测试需 ...

  10. gym.spaces中找不到prng解决方案

    gym.spaces中找不到prng解决方案 在运行飞桨MADDPG问题是遇到模型无法导入不存的的问题: ModuleNotFoundError: No module named 'multiagen ...