webpack 如何压缩文件
本节我们学习如何压缩 webpack
中的文件。在实际应用中,为了缩小打包后包的体积,我们可能需要将 CSS 和 JS 文件进行压缩,这需要用到 webpack
中的不同插件来实现。
压缩 CSS
在 webpack
中要压缩 CSS 文件,需要用到 optimize-css-assets-webpack-plugin
插件,这个插件会在 webpack
构建过程中搜索 CSS ,并优化 CSS。
首先我们需要安装这个插件,命令如下所示:
npm install optimize-css-assets-webpack-plugin --save-dev
执行命令后,会发现插件成功添加到了 package.json
文件中的 devDependencies
依赖中。
这个插件在使用时可以接受以下选项:
assetNameRegExp
:一个正则表达式,指示应优化的资产的名称。提供的正则表达式针对配置中ExtractTextPlugin
实例导出的文件的文件名运行,而不是源 CSS 文件的文件名。默认为/\.css$/g
。cssProcessor
:用于优化 CSS 的 CSS 处理器,默认为cssnano
。这应该是一个遵循cssnano.process
接口的函数(接收 CSS 和options
参数并返回一个Promise)。cssProcessorOptions
:传递给cssProcessor
的选项,默认为{}
。canPrint
:一个布尔值,指示插件是否可以将消息打印到控制台,默认为true
。
示例:
然后我们可以在 webpack.config.js
配置文件中配置这个插件,注意一下,我们之前在学习插件的时候就讲到过,插件在使用之前需要先通过 require
引用。
const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin'); module.exports = { entry: { entry:'./index.js', }, output: { path:__dirname + '/dist', filename:'./bundle.js' }, module:{ rules:[ { test:/.css$/, use:['style-loader','css-loader'] }] }, mode: 'production', plugins: [ new OptimizeCssAssetsPlugin({ assetNameRegExp: /\.optimize\.css$/g, cssProcessor: require('cssnano'), cssProcessorPluginOptions: { preset: ['default', { discardComments: { removeAll: true }, normalizeUnicode: false }], }, canPrint: true }) ] }
压缩 JS
如果我们要在 webpack
中压缩 JS ,可以使用 uglifyjs-webpack-plugin
插件。uglifyjs-webpack-plugin
插件用来对 JS 文件进行压缩,减小 JS 文件的大小,加速加载速度。因为这个插件会拖慢 webpack
的编译速度,所以一般我们在开发时会将其关闭,部署的时候再将其打开。
在使用此插件时,同样需要先进行安装:
npm install uglifyjs-webpack-plugin --save-dev
uglifyjs-webpack-plugin
插件的选项有如下所示:
-
test
:测试匹配文件,默认值为/\.js(\?.*)?$/i
。 -
include
:要包含的文件,默认值为undefined
。 -
exclude
:要排除的文件。 -
cache
:启用文件缓存。当 JS 没有发生变化则不压缩。 -
parallel
:是否启用并行压缩。 -
sourceMap
:是否启用sourceMap
。
示例:
uglifyjs-webpack-plugin
插件的使用如下所示:
const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); module.exports = { plugins: [ new UglifyJsPlugin({ test: /\.js(\?.*)?$/i, //测试匹配文件, include: /\/index.js/, //包含哪些文件 excluce: /\/excludes/, //不包含哪些文件 chunkFilter: (chunk) => { // `vendor` 模块不压缩 if (chunk.name === 'vendor') { return false; } return true; }, cache: true, parallel: true, sourceMap: true }) ] }

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
如何在 Vue 的计算属性中传递参数
在 Vue 中,计算属性(computed )是从其他响应式属性派生的属性,是用于自动监听响应式属性的变化,从而动态计算返回值。计算属性(computed )通常是一个没有参数的函数。当然如果需要像调用方法一样给计算属性传递参数也是可以的,本文介绍两种向计算属性传参的方法。 1.返回函数 这种方式通过计算属性返回的函数来进行传参,如下代码片段,对于一条未审核通过的记录,审核时间为 0,这是显示 -- : <template> <div id="app"> <p> <label>审核时间:</label> <i class="number"> {{ auditTime(1624314956) }} </i> </p> </div> </template> <script> export default { computed: { auditTime: () => { return (timestamp) => (t...
- 下一篇
数据库在各行各业的应用实践
如今,全社会驶入数字化转型快车道,数字生态正在推动着千行百业的变革。作为数字化转型的基石,数据库的重要性不言而喻。数据库更是成为企业的核心资产,运转和增长的驱动引擎,开发、运维等人员几乎每天都在和数据库接触。那么,在数据规模不断增长的今天,不同行业在选择数据库时都有哪些不同的需求?又是如何应用实践的呢? 在这里我认为有必要先了解一下数据库发展的三个时代,正是这三个时代推动了数字化时代。数据库发展的三个时代,成就了三种商业形态,并深入到了各行各业: 商业数据库时代:成就了商业软件时代,常应用于传统行业,例如:Oracle、DB2 等; 开源数据库时代:成就了互联网时代,常应用于互联网行业,例如:MySQL、PostgreSQL 等; 云(分布式)数据库时代:是商业和开源、SQL 和 NewSQL 交融的时代,成就了云和数字化时代,例如:OceanBase、TiDB 等。 对于以银行为例的金融行业,其业务价值很高,因而对数据库的“高可用、强一致、低延时”的要求较为极致,导致银行逐步从传统商业数据库(如,Oracle)转变到分布式数据;对于互联网教育行业,面对互联网和疫情的冲击,近年来呈现“...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS关闭SELinux安全模块
- Windows10,CentOS7,CentOS8安装Nodejs环境
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库