webpack 打包压缩js和css的方法示例
打包压缩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 标准错误输出
sideeffects函数副作用,即函数除了返回外还产生别的作用,比如改了全局变量
列一份配置:
//使用插件html-webpack-plugin打包合并html //使用插件extract-text-webpack-plugin打包独立的css //使用UglifyJsPlugin压缩代码 varHtmlWebpackPlugin=require('html-webpack-plugin'); varExtractTextPlugin=require('extract-text-webpack-plugin'); varwebpack=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:[ newHtmlWebpackPlugin({ title:'hellowebpack', template:'src/component/index.html', inject:'body', minify:{//压缩HTML文件 removeComments:true,//移除HTML中的注释 collapseWhitespace:true//删除空白符与换行符 } }), newExtractTextPlugin("[name].[hash].css"), newwebpack.optimize.UglifyJsPlugin({ compress:{//压缩代码 dead_code:true,//移除没被引用的代码 warnings:false,//当删除没有用处的代码时,显示警告 loops:true//当do、while、for循环的判断条件可以确定是,对其进行优化 }, except:['$super','$','exports','require']//混淆,并排除关键字 }) ] };
这里需要注意的是压缩的时候需要排除一些关键字,不能混淆,比如$或者require,如果混淆的话就会影响到代码的正常运行。
列几个压缩时常有的属性:
- dead_code--移除没被引用的代码
- loops--当do、while、for循环的判断条件可以确定是,对其进行优化。
- warnings--当删除没有用处的代码时,显示警告
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。