解决iview打包时UglifyJs报错的问题


Posted in Javascript onMarch 07, 2018

使用npm run dev时运行是ok的,但是npm run build打包时iview报错,

如下:

解决iview打包时UglifyJs报错的问题

原因是iview中使用了es6语法,然而uglifyJs是不支持的,打开我们的build/webpack.prod.conf.js文件,可以看到

// UglifyJs do not support ES6+, you can also use babel-minify for better treeshaking: https://github.com/babel/minify
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false
},
sourceMap: config.build.productionSourceMap,
parallel: true
}),

已经提示了uglifyJs不支持es6.

解决方案:

在webpack.base.conf.js中,我们先在js编译的时候添加如下:

{
test: /\.js$/,
loader: 'babel-loader',
include: [resolve('src'),
resolve('test'),resolve('/node_modules/iview/src'),resolve('/node_modules/iview/packages')]
},

先让iview的es6语法经过babel来转换,然后在build/webpack.prod.conf.js中,注释掉原来的uglifyJs,引入外部的uglifyJs对js进行压缩混淆,代码如下:

// UglifyJs do not support ES6+, you can also use babel-minify for better treeshaking: https://github.com/babel/minify
// new webpack.optimize.UglifyJsPlugin({
// compress: {
// warnings: false
// },
// sourceMap: config.build.productionSourceMap,
// parallel: true
// }),
new UglifyJsPlugin({
// 使用外部引入的新版本的js压缩工具
parallel: true,
uglifyOptions: {
ie8: false,
ecma: 6,
warnings: false,
mangle: true,
// debug false
output: {
comments: false,
beautify: false,
// debug true
},
compress: {
// 在UglifyJs删除没有用到的代码时不输出警告
warnings: false,
// 删除所有的 `console` 语句
// 还可以兼容ie浏览器
drop_console: 
true,
// 内嵌定义了但是只用到一次的变量
collapse_vars: 
true,
// 提取出出现多次但是没有定义成变量去引用的静态值
reduce_vars: 
true,
}
}
}),

当然我们要先引入外部插件:

const UglifyJsPlugin =
require('uglifyjs-webpack-plugin');

如此便可解决。

以上这篇解决iview打包时UglifyJs报错的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
自适应高度框架 ----属个人收藏内容
Jan 22 Javascript
javascript 控制 html元素 显示/隐藏实现代码
Sep 01 Javascript
jQuery下实现等待指定元素加载完毕(可改成纯js版)
Jul 11 Javascript
Javascript表格翻页效果的具体实现
Oct 05 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
Aug 18 Javascript
js实现鼠标滚轮控制图片缩放效果的方法
Feb 20 Javascript
jQuery实现动态添加和删除一个div
Aug 12 Javascript
基于javascript实现checkbox复选框实例代码
Jan 28 Javascript
JS给按钮添加跳转功能类似a标签
May 30 Javascript
微信小程序button标签open-type属性原理解析
Jan 21 Javascript
javascript实现倒计时关闭广告
Feb 09 Javascript
react 项目中引入图片的几种方式
Jun 02 Javascript
React Native使用fetch实现图片上传的示例代码
Mar 07 #Javascript
使用vue制作探探滑动堆叠组件的实例代码
Mar 07 #Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
Mar 07 #Javascript
关于Vue的路由权限管理的示例代码
Mar 06 #Javascript
vue.js在标签属性中插入变量参数的方法
Mar 06 #Javascript
基于Vue中点击组件外关闭组件的实现方法
Mar 06 #Javascript
解决vue build打包之后首页白屏的问题
Mar 06 #Javascript
You might like
PHP学习散记_编码(json_encode 中文不显示)
2011/11/10 PHP
php中使用preg_replace函数匹配图片并加上链接的方法
2013/02/06 PHP
php使用NumberFormatter格式化货币的方法
2015/03/21 PHP
PHP常见错误提示含义解释(实用!值得收藏)
2016/04/25 PHP
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
js 中的switch表达式使用示例
2020/06/03 Javascript
js中document.write使用过程中的一点疑问解答
2014/03/20 Javascript
Node.js中使用Log.io在浏览器中实时监控日志(等同tail -f命令)
2014/09/17 Javascript
利用JavaScript脚本实现滚屏效果的方法
2015/07/07 Javascript
基于jquery实现最简单的选项卡切换效果
2016/05/08 Javascript
AngularJS 中的事件详解
2016/07/28 Javascript
简单的js表格操作
2016/09/24 Javascript
浅谈layer的iframe弹窗给里面的标签赋值的问题
2016/11/10 Javascript
VSCode配置react开发环境的步骤
2017/12/27 Javascript
jQuery+SpringMVC中的复选框选择与传值实例
2018/01/08 jQuery
javaScript动态添加Li元素的实例
2018/02/24 Javascript
详解angular如何调用HTML字符串的方法
2018/06/30 Javascript
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
详解Vue的watch中的immediate与watch是什么意思
2019/12/30 Javascript
如何使用Jquery动态生成二级选项列表
2020/02/06 jQuery
Python实现获取网站PR及百度权重
2015/01/21 Python
python中for语句简单遍历数据的方法
2015/05/07 Python
PYTHON 中使用 GLOBAL引发的一系列问题
2016/10/12 Python
利用Python实现颜色色值转换的小工具
2016/10/27 Python
Python基于plotly模块实现的画图操作示例
2019/01/23 Python
Python中时间datetime的处理与转换用法总结
2019/02/18 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
Python实现JS解密并爬取某音漫客网站
2020/10/23 Python
美国亚马逊旗下男装网站:East Dane(支持中文)
2019/09/25 全球购物
Johnson Fitness澳大利亚:高级健身器材
2021/03/16 全球购物
教师见习期自我鉴定
2014/04/28 职场文书
支行行长竞聘演讲稿
2014/05/15 职场文书
运动会口号8字
2014/06/07 职场文书
党员违纪检讨书怎么写
2014/11/01 职场文书
民事调解书范文
2015/05/20 职场文书
详解PHP Swoole与TCP三次握手
2021/05/27 PHP