解决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 相关文章推荐
让iframe框架网页在任何浏览器下自动伸缩
Aug 18 Javascript
基于jquery的表格排序
Sep 11 Javascript
Chrome Form多次提交表单问题的解决方法
May 09 Javascript
有关JavaScript的10个怪癖和秘密分享
Aug 28 Javascript
jquery性能优化高级技巧
Aug 24 Javascript
jQuery+css实现的换页标签栏效果
Jan 27 Javascript
喜大普奔!jQuery发布 3.0 最终版
Jun 12 Javascript
bootstrap datetimepicker 日期插件在火狐下出现一条报错信息的原因分析及解决办法
Mar 08 Javascript
canvas实现刮刮卡效果
Mar 14 Javascript
JavaScrpt中如何使用 cookie 设置查看与删除功能
Jul 09 Javascript
微信小程序实现自定义picker选择器弹窗内容
May 26 Javascript
vue项目实现多语言切换的思路
Sep 17 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
德生PL990的分析评价
2021/03/02 无线电
phpstrom使用xdebug配置方法
2013/12/17 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
2014/12/15 PHP
smarty内置函数{loteral}、{ldelim}和{rdelim}用法实例
2015/01/22 PHP
php准确计算复活节日期的方法
2015/04/18 PHP
PHP SplObjectStorage使用实例
2015/05/12 PHP
thinkphp,onethink和thinkox中验证码不显示的解决方法分析
2016/06/06 PHP
Javascript基础教程之argument 详解
2015/01/18 Javascript
jquery实现的横向二级导航效果代码
2015/08/26 Javascript
javascript动画之磁性吸附效果篇
2016/12/09 Javascript
JS实现旋转木马式图片轮播效果
2017/01/18 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
2017/10/19 Javascript
详解javascript replace高级用法
2019/02/17 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
2019/08/20 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
JS实现拖拽元素时与另一元素碰撞检测
2020/08/27 Javascript
axios解决高并发的方法:axios.all()与axios.spread()的操作
2020/11/09 Javascript
[06:10]6.81新信使新套装!给你一个炫酷的DOTA2
2014/05/06 DOTA
[01:54]胎教DOTA2 准妈妈玩家现身中国区预选赛
2016/06/26 DOTA
跟老齐学Python之从if开始语句的征程
2014/09/14 Python
深入理解Python中各种方法的运作原理
2015/06/15 Python
开源Web应用框架Django图文教程
2017/03/09 Python
Python 实现淘宝秒杀的示例代码
2018/01/02 Python
简单谈谈Python的pycurl模块
2018/04/07 Python
基于Django URL传参 FORM表单传数据 get post的用法实例
2018/05/28 Python
Python队列RabbitMQ 使用方法实例记录
2019/08/05 Python
Pytorch卷积层手动初始化权值的实例
2019/08/17 Python
python误差棒图errorbar()函数实例解析
2020/02/11 Python
微软开源最强Python自动化神器Playwright(不用写一行代码)
2021/01/05 Python
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
2013/06/06 HTML / CSS
美国环保婴儿用品公司:The Honest Company
2017/11/23 全球购物
经济实惠的豪华背包和行李袋:Packs Project
2018/10/17 全球购物
护士实习自我鉴定
2013/10/22 职场文书
甲乙双方合作协议书
2014/10/13 职场文书
银行安全保卫工作总结
2015/08/10 职场文书
2016年教师节感恩寄语
2015/12/04 职场文书