聊聊 webpack 打包如何压缩包文件大小

想必很多人都经历过做完一个项目后,再打包发现某些文件非常大,导致页面加载时很慢,这就很影响用户体验了,所以在我经历了一些打包后,讲讲如何有效地缩小包体积,加快页面的首屏渲染

webpack 插件

使用过 vue-cli 创建的项目,应该都能看到,这些插件,在build/webpack.prod.conf.js文件中可以观察到这些插件,使用 react 项目的可以照着配,使用一下相同的插件;
使用哪些请自行酌情判断,我来简介一些主要插件的作用:

  • extract-text-webpack-plugin 用于将 CSS 从主应用程序中分离
  • optimize-css-assets-webpack-plugin 压缩提取出的css,并解决ExtractTextPlugin分离出的js重复问题
  • CommonsChunkPlugin 将公共模块拆出来,最终合成的文件能够在最开始的时候加载一次,便存到缓存中供后续使用
  • uglifyjs-webpack-plugin 压缩js代码 需要说明的是可以在上面加上去除 console.log 的选项,也是可以有效减少包体积
  • ModuleConcatenationPlugin 作用域提升,对于压缩代码有一些效果,但不是很大

在这里附上所有插件的说明:
https://webpack.docschina.org/plugins/

在这里我附上我的项目里打包后的文件体积,该项目使用 vue-cli 构建:

可以看到占体积最大的是 vendor.js 这个文件
这个项目所占的文件基本是所用的包的代码,如 vue ,vuex,vue-router,element-ui等文件的 js 代码

dll 插件

我在之前搜索压缩代码的博客时,经常也会看到 dll 插件能够压缩体积,但是经过实践证明,这个结论是错误的;
他的作用只是加快 run build 和 run dev 的速度,但是,相较于使用 cdn 加速,是一点优势都没有,下面来看

添加 dll 之后的文件大小:

添加优化 js 代码后的文件大小:

通过图片看到文件是压缩了,但是仍然还没有我正常情况下的文件小,也许是我优化的问题,但是再优化,最多也就是和正常情况差不多,仍然没有压缩体积的作用;

可以得出结论 DllPlugin 基本上是只用于开发环境的;

使用 cdn 加速

目前来说这是最好的一个方法了;
可以先使用 analys 分析一下, vendor 里最大占用的插件是什么,根据结果选择;
比如 我的项目中 element-UI 和 Vue 的 js 文件是占据第一和第二的大小的,所以需要将这2个文件使用 cdn 加速来替代;
需要注意的是使用 cdn 的文件不要太多,尽量不超过3个文件
可以使用免费的bootcdn 加速 http://www.bootcdn.cn/
方法很简单,在 index.html 里面添加 cdn 地址:

<body>
    <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script>
    <script src="https://cdn.bootcss.com/element-ui/2.3.7/index.js"></script>
    <div id="app"></div>
</body>

需要注意要将文件放在前面一点

在 main.js和任何引用过Vue 文件的地方:删除 import Vue from ‘vue‘,如果有一个没有删,那么打包时还会把文件引用的;
并且删除 import ElementUI from ‘element-ui‘Vue.use(ElementUI)
如果添加了eslint 呢么可能会报错 可以使用 const Vue = window.Vue来去除报错,
如果仍需要在 main.js 里使用 element 的话可以通过window.ELEMENT来引用;
打包后可以有效减小包体积:

Gzip加速

这个方法的压缩代码能力是非常恐怖的,压缩率可达70%,不过需要了解的是需要服务器开启 gzip 加速才管用,我没使用这个方法,不排除他会对服务器会造成一定的压力,如果项目足够重要或者不担心服务器压力问题的话,可以放心使用,不过除了这个方法,使用 cdn 加速是目前最好的方法;
我当前项目也是使用的 cdn 加速来减小包体积的;

总结

如果服务器支持 Gzip 加速且不担心服务器压力的话,那么可以使用 Gzip 来加速,否则使用 cdn 加速主要文件的方法来压缩代码,当然首先你也需要添加 webpack 插件来优化 js 代码;

原文地址:https://www.cnblogs.com/Grewer/p/9033530.html

时间: 2024-09-06 21:06:47

聊聊 webpack 打包如何压缩包文件大小的相关文章

webpack打包和gulp打包工具详细教程

30分钟手把手教你学webpack实战 阅读目录 一:什么是webpack? 他有什么优点? 二:如何安装和配置 三:理解webpack加载器 四:理解less-loader加载器的使用 五:理解babel-loader加载器的含义 六:了解下webpack的几个命令 七:webpack对多个模块依赖进行打包 八:如何独立打包成样式文件 九:如何打包成多个资源文件 十:关于对图片的打包 十一:React开发神器:react-hot-loader 回到顶部 什么是webpack? 他有什么优点?

webpack打包性能优化

1. 使用 gzip 压缩打包后的 js 文件 这个方法优化浏览器下载时的文件大小(打包后的文件大小没有改变) webpack.config.prod.js 中 var CompressionWebpackPlugin = require('compression-webpack-plugin'); // 在 pligins 中添加 new CompressionWebpackPlugin({ //gzip 压缩 asset: '\[path\].gz\[query\]', algorithm:

前端项目模块化的实践2:使用 Webpack 打包基础设施代码

以下是关于前端项目模块化的实践,包含以下内容: 搭建 NPM 私有仓库管理源码及依赖: 使用 Webpack 打包基础设施代码: 使用 TypeScript 编写可靠类库 (实现中) 本文是关于前端项目模板化的第2部分 现状 实际项目远远比示例使用的 myGreeting 复杂,比如 为了提高可维护性我们将项目折成了许多功能模板: 我们希望使用 Promise 等语法等,但是顾忌目标环境的支持能力: 可能依赖了多个第三方类库: 为了提高加载速度我们打包时需要进行很多额外工作: 代码压缩: Tre

webpack 打包压缩 ES6文件报错UglifyJs + Unexpected token punc &#171;(&#187;, expected punc &#171;:&#187;

webpack打包压缩 ES6 js..vue报错: ERROR in js/test.js from UglifyJs Unexpected token punc ?(?, expected punc ?:? [js/test.js:1374,5] 解决方案: 配置babel,把配置放到文件[.babelrc]中 { "presets": ["es2015"] }

webpack打包css

1.第一种方式 1.安装css-loader和style-loader $ cnpm install css-loader style-loader --save-dev 2.引用的时候使用css-loader,让webpack可以打包css文件 require('css-loader!./style.css'); 3.打包 4.引入style-loader,将样式通过style标签写到head标签里 require('style-loader!css-loader!./style.css');

初试webpack打包

第一次接触webpack,学习了如何用webpack打包,记录一下过程. 1.在项目根目录安装webpack $ npm install webpack --save-dev 2.新建一个webpack.config.js 3.根据需要安装需要的加载器,并在webpack.config.js的module中进行配置,例如加载babel. $ npm install babel-loader --save-dev webpack.config.js文件 var webpack = require(

webpack打包avalon

webpack打包avalon+oniui+jquery 随着avalon的发展壮大,我根据CSDN的统计数字,中国前端大概有1%的人在使用avalon了. avalon的最大优势是能兼容IE6,并且其API是非常稳定,只是在1.3.7 对ms-duplex的拦截器做了一次改动(但这次改动也向下兼容),1.5中去除avalon.define的旧风格支持,废掉ms-widget指令改成更强大的自定义标签指令.相对于其他MVVM框架来说,是非常的良心.此外,配套是非常完善,尤其是oniui,也支持到

【vue】饿了么项目-使用webpack打包项目

1.vue cli给我们提供了npm run build命令打包项目,在packa.json文件中scripts对象中有build属性,当我们执行npm run build时,就执行build对应的"node build/build.js"脚本 build完成后显示 进入项目文件夹,找到dist文件夹,这些是打包后产生的文件 2.webpack打包过程中会将css和js文件单独提取出来,且会根据path存放进相应的文件夹下,形成如上图的根目录,文件名是根据内容产生的哈希值,文件内容改变

webpack打包(一)

1.安装webpack打包工具 webpack是使用npm安装 npm install webpack -g //全局安装 在命令行中就可以使用webpack这个命令了. 提示:由于npm安装会去找国外镜像,所以安装国内淘宝cnpm镜像 npm install cnpm -g 以后所有的npm操作都用cnpm命令代替就行! 注:webpack采用的是commonJs规范 使用webpack(一) calc.js function add(x, y) { return x + y; } modul