本篇文章主要介绍了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 标准错误输出
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,如果混淆的话就会影响到代码的正常运行。
列几个压缩时常有的属性:
dead_code -- 移除没被引用的代码
loops -- 当 do 、 while 、 for 循环的判断条件可以确定是,对其进行优化。
warnings -- 当删除没有用处的代码时,显示警告
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
使用原生ajax处理json字符串的方法
jquery中ajax的4种常用请求方式介绍
ajax返回object object的快速解决方法
以上就是webpack 打包压缩js和css的方法示例的详细内容。