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 相关文章推荐
Prototype使用指南之form.js
Jan 10 Javascript
Jquery事件的连接使用示例
Jun 18 Javascript
解决jquery中美元符号命名冲突问题
Jan 08 Javascript
jquery如何扑捉回车键触发的事件
Apr 24 Javascript
js数组与字符串的相互转换方法
Jul 09 Javascript
浅谈jQuery animate easing的具体使用方法(推荐)
Jun 17 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
Feb 12 Javascript
使用JS动态显示文本
Sep 09 Javascript
element-ui upload组件多文件上传的示例代码
Oct 17 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
Apr 07 Javascript
vue配置文件实现代理v2版本的方法
Jun 21 Javascript
JS实现横向跑马灯效果代码
Apr 20 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过滤危险html代码的函数
2008/07/22 PHP
php 信息采集程序代码
2009/03/17 PHP
php is_file 判断给定文件名是否为一个正常的文件
2010/05/10 PHP
JavaScript 节点操作 以及DOMDocument属性和方法
2007/12/06 Javascript
Javascript中的isNaN函数使用说明
2011/11/10 Javascript
jquery getScript动态加载JS方法改进详解
2012/11/15 Javascript
js使用split函数按照多个字符对字符串进行分割的方法
2015/03/20 Javascript
Node.js巧妙实现Web应用代码热更新
2015/10/22 Javascript
Bootstrap学习笔记之css组件(3)
2016/06/07 Javascript
JS 循环li添加点击事件 (闭包的应用)
2016/12/10 Javascript
angular select 默认值设置方法
2017/06/23 Javascript
解决layer.confirm快速点击会重复触发事件的问题
2019/09/23 Javascript
微信小程序实现限制用户转发功能的实例代码
2020/02/22 Javascript
[05:45]Ti4观战指南(下)
2014/07/07 DOTA
Python的迭代器和生成器
2015/07/29 Python
微信跳一跳游戏python脚本
2020/04/01 Python
Python3.6日志Logging模块简单用法示例
2018/06/14 Python
python pandas cumsum求累计次数的用法
2019/07/29 Python
使用Python实现牛顿法求极值
2020/02/10 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
2020/03/16 Python
python数据库开发之MongoDB安装及Python3操作MongoDB数据库详细方法与实例
2020/03/18 Python
python3中sys.argv的实例用法
2020/04/24 Python
整个世界的设计师家具在哈恩:Designathome
2019/03/25 全球购物
领先的荷兰线上超市:荷兰之家Holland at Home(支持中文)
2021/01/21 全球购物
编辑个人求职信范文
2013/09/21 职场文书
出国留学自荐信
2013/10/25 职场文书
班组长工作职责
2013/12/25 职场文书
二年级语文教学反思
2014/02/02 职场文书
七年级政治教学反思
2014/02/03 职场文书
2014年部门工作总结
2014/11/12 职场文书
2014年项目工作总结
2014/11/24 职场文书
党员争先创优承诺书
2015/01/20 职场文书
大学自主招生自荐信(2016精选篇)
2016/01/28 职场文书
数学复习课教学反思
2016/02/18 职场文书
在 SQL 语句中处理 NULL 值的方法
2021/06/07 SQL Server
python_tkinter事件类型详情
2022/03/20 Python