webpack 打包压缩js和css的方法示例


Posted in Javascript onMarch 20, 2018

打包压缩js与css

由于webpack本身集成了UglifyJS插件(webpack.optimize.UglifyJsPlugin)来完成对JS与CSS的压缩混淆,无需引用额外的插件,

其命令 webpack -p 即表示调用UglifyJS来压缩代码,还有不少webpack插件如 html-webpack-plugin 也会默认使用UglifyJS。

uglify-js的发行版本只支持ES5,如果你要压缩ES6+代码请使用开发分支。

UglifyJS可用的选项有:

parse       解释

compress    压缩

mangle      混淆

beautify    美化

minify      最小化//在插件HtmlWebpackPlugin中使用

CLI         命令行工具

sourcemap   编译后代码对源码的映射,用于网页调试

AST         抽象语法树

name        名字,包括变量名、函数名、属性名

toplevel    顶层作用域

unreachable 不可达代码

option      选项

STDIN       标准输入,指在命令行中直接输入

STDOUT      标准输出

STDERR      标准错误输出

side effects函数副作用,即函数除了返回外还产生别的作用,比如改了全局变量

列一份配置:

//使用插件html-webpack-plugin打包合并html
//使用插件extract-text-webpack-plugin打包独立的css
//使用UglifyJsPlugin压缩代码
var HtmlWebpackPlugin = require('html-webpack-plugin');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var webpack = require("webpack");
module.exports = {
  entry: {
    bundle : './src/js/main.js'
  },
  output: {
    filename: "[name]-[hash].js",
    path: __dirname + '/dist'
  },
  module: {
    rules: [
      {
        test: /\.css$/,
        use: ExtractTextPlugin.extract({
          fallback: "style-loader",
          use: "css-loader"
        })

      },
      {
        test: /\.(png|jpg|jpeg|gif)$/,
        use: 'url-loader?limit=8192'
      }
    ]
  },
  resolve:{
      extensions:['.js','.css','.json'] //用于配置程序可以自行补全哪些文件后缀
  },

  plugins:[
    new HtmlWebpackPlugin({
      title: 'hello webpack',
      template:'src/component/index.html',
      inject:'body',
      minify:{ //压缩HTML文件
         removeComments:true,  //移除HTML中的注释
         collapseWhitespace:true  //删除空白符与换行符
       }
    }),
    new ExtractTextPlugin("[name].[hash].css"),
    new webpack.optimize.UglifyJsPlugin({
      compress: {   //压缩代码
        dead_code: true,  //移除没被引用的代码
        warnings: false,   //当删除没有用处的代码时,显示警告
        loops: true //当do、while 、 for循环的判断条件可以确定是,对其进行优化
      },
      except: ['$super', '$', 'exports', 'require']  //混淆,并排除关键字
    })
  ]
};

这里需要注意的是压缩的时候需要排除一些关键字,不能混淆,比如$或者require,如果混淆的话就会影响到代码的正常运行。

列几个压缩时常有的属性:

  1. dead_code -- 移除没被引用的代码
  2. loops -- 当 do 、 while 、 for 循环的判断条件可以确定是,对其进行优化。
  3. warnings -- 当删除没有用处的代码时,显示警告

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript入门教程(5) js Screen屏幕对象
Jan 31 Javascript
document.getElementById为空或不是对象的解决方法
Jan 24 Javascript
通过JavaScript控制字体大小的代码
Oct 04 Javascript
Jquery实现点击按钮,连续地向textarea中添加值的实例代码
Mar 08 Javascript
jQuery简单实现QQ空间点赞已经取消点赞
Apr 02 Javascript
AngularJS指令详解及示例代码
Aug 16 Javascript
原生JS实现的放大镜效果实例代码
Oct 15 Javascript
微信JSAPI Ticket接口签名详解
Jun 28 Javascript
vue点击按钮动态创建与删除组件功能
Dec 29 Javascript
JavaScript实现Excel表格效果
Feb 07 Javascript
JavaScript代码实现简单计算器
Dec 27 Javascript
js实现类选择器和name属性选择器的示例步骤
Feb 07 Javascript
浅谈Node 调试工具入门教程
Mar 20 #Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
Mar 20 #Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
Mar 20 #jQuery
关于vue面试题汇总
Mar 20 #Javascript
vue init webpack myproject构建项目 ip不能访问的解决方法
Mar 20 #Javascript
快速解决vue-cli不能初始化webpack模板的问题
Mar 20 #Javascript
解决vue-cli + webpack 新建项目出错的问题
Mar 20 #Javascript
You might like
PHP 处理TXT文件(打开/关闭/检查/读取)
2013/05/13 PHP
简单的cookie计数器实现源码
2013/06/07 PHP
PHP中读取文件的8种方法和代码实例
2014/08/05 PHP
ajaxControlToolkit AutoCompleteExtender的用法
2008/10/30 Javascript
用JQuery在网页中实现分隔条功能的代码
2012/08/09 Javascript
IFrame跨域高度自适应实现代码
2012/08/16 Javascript
bootstrap-table实现服务器分页的示例 (spring 后台)
2017/09/01 Javascript
仿淘宝JSsearch搜索下拉深度用法
2018/01/15 Javascript
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
2018/01/18 jQuery
JavaScript实现多叉树的递归遍历和非递归遍历算法操作示例
2018/02/08 Javascript
学习JS中的DOM节点以及操作
2018/04/30 Javascript
js+SVG实现动态时钟效果
2018/07/14 Javascript
Angular7创建项目、组件、服务以及服务的使用
2019/02/19 Javascript
基于Vue 实现一个中规中矩loading组件
2019/04/03 Javascript
js+html实现周岁年龄计算器
2019/06/25 Javascript
vuex 动态注册方法 registerModule的实现
2019/07/03 Javascript
vue实现给div绑定keyup的enter事件
2020/07/31 Javascript
详解python调度框架APScheduler使用
2017/03/28 Python
Python使用回溯法子集树模板解决迷宫问题示例
2017/09/01 Python
python创建属于自己的单词词库 便于背单词
2019/07/30 Python
Python 动态导入对象,importlib.import_module()的使用方法
2019/08/28 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
2020/02/18 Python
面向新手解析python Beautiful Soup基本用法
2020/07/11 Python
两种CSS3伪类选择器详细介绍
2013/12/24 HTML / CSS
高二英语教学反思
2014/01/19 职场文书
管理学院毕业生自荐信范文
2014/03/10 职场文书
德语专业求职信
2014/03/12 职场文书
竞聘演讲稿
2014/04/24 职场文书
大二学习计划书范文
2014/04/27 职场文书
银行优秀员工事迹材料
2014/05/29 职场文书
机关作风建设工作总结
2014/10/23 职场文书
临床医学生职业规划书范文
2014/10/25 职场文书
社区三八妇女节活动总结
2015/02/06 职场文书
少年的你:世界上没有如果,要在第一次就勇敢的反抗
2019/11/20 职场文书
PostgreSQL怎么创建分区表详解
2022/06/25 PostgreSQL