解决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 相关文章推荐
Dojo 学习笔记入门篇 First Dojo Example
Nov 15 Javascript
Javascript弹出窗口的各种方法总结
Nov 11 Javascript
从数据库读取数据后将其输出成html标签的三种方法
Oct 13 Javascript
JS+CSS实现Li列表隔行换色效果的方法
Feb 16 Javascript
JS模拟酷狗音乐播放器收缩折叠关闭效果代码
Oct 29 Javascript
jQuery基于cookie实现的购物车实例分析
Dec 24 Javascript
纯JavaScript代码实现文本比较工具
Feb 17 Javascript
JavaScript中的对象继承关系
Aug 01 Javascript
bootstrap table小案例
Oct 21 Javascript
iscroll动态加载数据完美解决方法
Jul 18 Javascript
微信小程序之自定义组件的实现代码(附源码)
Aug 02 Javascript
自定义Vue中的v-module双向绑定的实现
Apr 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
Session保存到数据库的php类分享
2011/10/24 PHP
PHP安全性漫谈
2012/06/28 PHP
PHP输出九九乘法表代码实例
2015/03/27 PHP
教大家制作简单的php日历
2015/11/17 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
2015/11/18 PHP
PHP Swoole异步读取、写入文件操作示例
2019/10/24 PHP
window.open()弹出居中的窗口
2007/02/01 Javascript
10款新鲜出炉的 jQuery 插件(Ajax 插件,有幻灯片、图片画廊、菜单等)
2011/06/08 Javascript
重构Javascript代码示例(重构前后对比)
2013/01/23 Javascript
JS实现切换标签页效果实例代码
2013/11/01 Javascript
js实现点击链接后延迟3秒再跳转的方法
2015/06/05 Javascript
浅谈Javascript数组索引
2015/07/29 Javascript
jQuery数据检索中根据关键字快速定位GridView指定行的实现方法
2016/06/08 Javascript
JS代码实现根据时间变换页面背景效果
2016/06/16 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
nodejs简单抓包工具使用详解
2019/08/23 NodeJs
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
[38:21]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS Newbee
2018/03/31 DOTA
[49:41]NB vs NAVI Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
[59:30]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
Python整型运算之布尔型、标准整型、长整型操作示例
2017/07/21 Python
python使用opencv对图像mask处理的方法
2019/07/05 Python
python实现的批量分析xml标签中各个类别个数功能示例
2019/12/30 Python
详解python itertools功能
2020/02/07 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
python通过函数名调用函数的几种场景
2020/09/23 Python
python em算法的实现
2020/10/03 Python
python输出国际象棋棋盘的实例分享
2020/11/26 Python
自动化专业个人求职信范文
2013/12/30 职场文书
女娲补天教学反思
2014/02/05 职场文书
综合办公室主任岗位职责
2014/04/13 职场文书
擅自离岗检讨书
2014/09/12 职场文书
党员个人对照检查材料范文
2014/09/24 职场文书
神龙架导游词
2015/02/11 职场文书
护理专业自荐信范文
2015/03/06 职场文书
goland 恢复已更改文件的操作
2021/04/28 Golang