解决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 相关文章推荐
Jquery submit()无法提交问题
Apr 21 Javascript
关于include标签导致js路径找不到的问题分析及解决
Jul 09 Javascript
JavaScript数据库TaffyDB用法实例分析
Jul 27 Javascript
jquery中ajax跨域方法实例分析
Dec 18 Javascript
基于jQuery实现文本框只能输入数字(小数、整数)
Jan 14 Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
Apr 16 Javascript
Jquery EasyUI Datagrid右键菜单实现方法
Dec 30 Javascript
VueCli3构建TS项目的方法步骤
Nov 07 Javascript
bootstrap与pagehelper实现分页效果
Dec 29 Javascript
微信小程序在线客服自动回复功能(基于node)
Jul 03 Javascript
Vue中添加滚动事件设置的方法详解
Sep 14 Javascript
JavaScript实现点击出现子菜单效果
Feb 08 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
基于session_unset与session_destroy的区别详解
2013/06/03 PHP
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
2015/03/07 PHP
如何解决PHP无法实现多线程的问题
2015/09/25 PHP
详解WordPress中调用评论模板和循环输出评论的PHP函数
2016/01/05 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
2020/06/06 PHP
PHP xpath提取网页数据内容代码解析
2020/07/16 PHP
简短几句jquery代码的实现一个图片向上滚动切换
2011/09/02 Javascript
快速掌握Node.js之Window下配置NodeJs环境
2016/03/21 NodeJs
基于vue2.0实现的级联选择器
2017/06/09 Javascript
浅谈jQuery框架Ajax常用选项
2017/07/08 jQuery
Vue.js实现按钮的动态绑定效果及实现代码
2017/08/21 Javascript
vue-router重定向不刷新问题的解决
2018/06/25 Javascript
详解实现一个通用的“划词高亮”在线笔记功能
2019/04/23 Javascript
Vue组件通信的几种实现方法
2019/04/25 Javascript
layui加载表格,绑定新增,编辑删除,查看按钮事件的例子
2019/09/06 Javascript
Ant Design的Table组件去除
2020/10/24 Javascript
Python 获得13位unix时间戳的方法
2017/10/20 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
通过Python模块filecmp 对文件比较的实现方法
2018/06/29 Python
python MNIST手写识别数据调用API的方法
2018/08/08 Python
Python的条件表达式和lambda表达式实例
2019/01/31 Python
对python中的try、except、finally 执行顺序详解
2019/02/18 Python
Python中将两个或多个list合成一个list的方法小结
2019/05/12 Python
python mock测试的示例
2020/10/19 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
2021/03/01 Python
美国家居装饰和豪华家具购物网站:One Kings Lane
2018/12/24 全球购物
法国购买隐形眼镜和眼镜网站:Optical Center
2019/10/08 全球购物
建筑设计专业求职自我评价
2014/03/02 职场文书
副检察长四风问题对照检查材料思想汇报
2014/10/07 职场文书
白鹤梁导游词
2015/02/06 职场文书
2015年高一班主任工作总结
2015/05/13 职场文书
2015年基建工作总结范文
2015/05/23 职场文书
建国大业观后感800字
2015/06/01 职场文书
2016年寒假见闻
2015/10/10 职场文书
《鲸》教学反思
2016/02/23 职场文书