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 相关文章推荐
在textarea中显示html页面的javascript代码
Apr 20 Javascript
jquery getScript动态加载JS方法改进详解
Nov 15 Javascript
一个仿糯米弹框效果demo
Jul 22 Javascript
javascript实现PC网页里的拖拽效果
Mar 14 Javascript
jQuery实现右侧抽屉式在线客服功能
Dec 25 jQuery
JavaScript实现仿Clock ISO时钟
Jun 29 Javascript
vue 基于element-ui 分页组件封装的实例代码
Dec 10 Javascript
js中null与空字符串""的区别讲解
Jan 17 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
Jun 07 Javascript
解决vue-router 二级导航默认选中某一选项的问题
Nov 01 Javascript
antd-mobile ListView长列表的数据更新遇到的坑
Apr 08 Javascript
vue 使用饿了么UI仿写teambition的筛选功能
Mar 01 Vue.js
浅谈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版(5)
2006/10/09 PHP
php循环语句 for()与foreach()用法区别介绍
2012/09/05 PHP
ThinkPHP实例化模型的四种方法概述
2014/08/22 PHP
PHP使用array_multisort对多个数组或多维数组进行排序
2014/12/16 PHP
初识laravel5
2015/03/02 PHP
JS清除IE浏览器缓存的方法
2013/07/26 Javascript
jQuery选择器简明总结(含用法实例,一目了然)
2014/04/25 Javascript
js实现表单Radio切换效果的方法
2015/08/17 Javascript
JS Array.slice 截取数组的实现方法
2016/01/02 Javascript
AngularJs 动态加载模块和依赖
2016/09/15 Javascript
JS中mouseup事件丢失的原因与解决办法
2017/06/14 Javascript
inner join 内联与left join 左联的实例代码
2017/09/18 Javascript
js实现Tab选项卡切换效果
2020/07/17 Javascript
layui弹出框Tab选项卡的示例代码
2019/09/04 Javascript
vue.js实现三级菜单效果
2019/10/19 Javascript
JS实现手写 forEach算法示例
2020/04/29 Javascript
解决vue-router 切换tab标签关闭时缓存问题
2020/07/22 Javascript
[01:17]辉夜杯战队访谈宣传片—EHOME
2015/12/25 DOTA
Python实现简单文本字符串处理的方法
2018/01/22 Python
Python向Excel中插入图片的简单实现方法
2018/04/24 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
2018/09/19 Python
Python实现的银行系统模拟程序完整案例
2019/04/12 Python
pyinstaller参数介绍以及总结详解
2019/07/12 Python
python3 requests库实现多图片爬取教程
2019/12/18 Python
python 微信好友特征数据分析及可视化
2020/01/07 Python
python 非线性规划方式(scipy.optimize.minimize)
2020/02/11 Python
python库skimage给灰度图像染色的方法示例
2020/04/27 Python
英国最大的海报商店:GB Posters
2018/03/20 全球购物
大学军训感言
2014/01/10 职场文书
新学期家长寄语
2014/01/19 职场文书
金融事务专业求职信
2014/04/25 职场文书
个人查摆剖析材料
2014/10/04 职场文书
教师节感谢信
2015/01/22 职场文书
初一语文教学反思
2016/03/03 职场文书
德生2P3收音机开箱评测
2022/04/30 无线电
Redis特殊数据类型bitmap位图
2022/06/01 Redis