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 相关文章推荐
转换json格式的日期为Javascript对象的函数
Jul 13 Javascript
jquery实现居中弹出层代码
Aug 25 Javascript
jQuery下通过replace字符串替换实现大小图片切换
May 22 Javascript
jquery实现未经美化的简洁TAB菜单效果
Aug 28 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
Dec 04 Javascript
Jquery实现$.fn.extend和$.extend函数
Apr 14 Javascript
响应式表格之固定表头的简单实现
Aug 26 Javascript
AngularJS 仿微信图片手势缩放的实例
Sep 28 Javascript
node实现基于token的身份验证
Apr 09 Javascript
微信小程序自定义轮播图
Nov 04 Javascript
layer实现弹出层自动调节位置
Sep 05 Javascript
JavaScript 面向对象程序设计详解【类的创建、实例对象、构造函数、原型等】
May 12 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
神族 Protoss 剧情介绍
2020/03/14 星际争霸
PHP Smarty生成EXCEL文档的代码
2008/08/23 PHP
网站用php实现paypal整合方法
2010/11/28 PHP
php编程中echo用逗号和用点号连接的区别
2016/03/26 PHP
PHP框架性能测试报告
2016/05/08 PHP
thinkphp3.x中变量的获取和过滤方法详解
2016/05/20 PHP
自己动手制作jquery插件之自动添加删除行的实现
2011/10/13 Javascript
解决json日期格式问题的3种方法
2014/02/02 Javascript
JS鼠标拖拽实例分析
2015/11/23 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
2016/07/01 Javascript
JS/jQuery判断DOM节点是否存在的简单方法
2016/11/24 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
微信小程序中做用户登录与登录态维护的实现详解
2017/05/17 Javascript
关于react-router的几种配置方式详解
2017/07/24 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
2017/12/13 Javascript
解决angular2 获取到的数据无法实时更新的问题
2018/08/31 Javascript
微信小程序实现文字从右向左无限滚动
2020/11/18 Javascript
vue自定义指令用法经典实例小结
2019/03/16 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
Nodejs + Websocket 指定发送及群聊的实现
2020/01/09 NodeJs
vue data有值,但是页面{{}} 取不到值的解决
2020/11/09 Javascript
Python subprocess模块学习总结
2014/03/13 Python
python 读入多行数据的实例
2018/04/19 Python
解决python大批量读写.doc文件的问题
2018/05/08 Python
Python实现的ftp服务器功能详解【附源码下载】
2019/06/26 Python
python gensim使用word2vec词向量处理中文语料的方法
2019/07/05 Python
python实现按行分割文件
2019/07/22 Python
Python 类的魔法属性用法实例分析
2019/11/21 Python
Python for i in range ()用法详解
2020/09/18 Python
Scrapy框架基本命令与settings.py设置
2020/02/06 Python
Python Django中的STATIC_URL 设置和使用方式
2020/03/27 Python
斯洛伐克家具和时尚装饰品购物网站:Butlers.sk
2019/09/08 全球购物
Stio官网:男女、儿童户外服装
2019/12/13 全球购物
园林专业毕业生自荐信
2014/07/04 职场文书
初中军训感想
2015/08/07 职场文书
如何利用python实现Simhash算法
2022/06/28 Python