解决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 相关文章推荐
javascript 节点排序 2
Jan 31 Javascript
JQuery优缺点分析说明
Apr 10 Javascript
javascript对下拉列表框(select)的操作实例讲解
Nov 29 Javascript
jQuery实现滚动切换的tab选项卡效果代码
Aug 26 Javascript
javascript中去除数组重复元素的实现方法【实例】
Apr 12 Javascript
简单介绍react redux的中间件的使用
Apr 06 Javascript
vue项目打包后打开页面空白解决办法
Jun 29 Javascript
JavaScript数组基于交换的排序示例【冒泡排序】
Jul 21 Javascript
vue中使用heatmapjs的示例代码(结合百度地图)
Sep 05 Javascript
Vue实现拖放排序功能的实例代码
Jul 08 Javascript
修改layui的后台模板的左侧导航栏可以伸缩的方法
Sep 10 Javascript
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
Nov 20 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删除指定目录的方法
2015/04/03 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
JAVASCRIPT下判断IE与FF的比较简单的方式
2008/10/17 Javascript
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
Jquery中增加参数与Json转换代码
2009/11/20 Javascript
JQuery与iframe交互实现代码
2009/12/24 Javascript
在javascript中关于节点内容加强
2013/04/11 Javascript
js实现千分符和保留几位小数的简单实例
2016/08/01 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
2017/04/01 Javascript
JS实现的DOM插入节点操作示例
2018/04/04 Javascript
Nodejs中的JWT和Session的使用
2018/08/21 NodeJs
vue全屏事件开发详解
2020/06/17 Javascript
JS继承实现方法及优缺点详解
2020/09/02 Javascript
javascript实现前端分页功能
2020/11/26 Javascript
js属性对象的hasOwnProperty方法的使用
2021/02/05 Javascript
[32:26]EG vs IG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python中常见的异常总结
2018/02/20 Python
Python实现修改IE注册表功能示例
2018/05/10 Python
python实现黑客字幕雨效果
2018/06/21 Python
python爬虫项目设置一个中断重连的程序的实现
2019/07/26 Python
使用Python的turtle模块画国旗
2019/09/24 Python
Python GUI自动化实现绕过验证码登录
2020/01/10 Python
python读取与处理netcdf数据方式
2020/02/14 Python
Python3打包exe代码2种方法实例解析
2020/02/17 Python
英国精品买手店:Browns Fashion
2016/09/29 全球购物
一级方程式赛车官方网上商店:F1 Store(支持中文)
2018/01/12 全球购物
吉列剃须刀美国官网:Gillette美国
2018/07/13 全球购物
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
临床医学专业个人的自我评价
2013/09/27 职场文书
寒假思想汇报
2014/01/10 职场文书
经销商会议欢迎词
2014/01/11 职场文书
小学信息技术教学反思
2014/02/10 职场文书
计算机专业应届生求职信
2014/04/06 职场文书
2015年医德医风工作总结
2015/04/02 职场文书
Django实现drf搜索过滤和排序过滤
2021/06/21 Python
mysql 生成连续日期及变量赋值
2022/03/20 MySQL