解决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+javascript编写国籍控件
Feb 12 Javascript
jQuery+AJAX实现无刷新下拉加载更多
Jul 03 Javascript
javascript字符串循环匹配实例分析
Jul 17 Javascript
javascript冒泡排序小结
Apr 10 Javascript
JavaScript随机生成颜色的方法
Oct 15 Javascript
vue2.0 移动端实现下拉刷新和上拉加载更多的示例
Apr 23 Javascript
一个简单的node.js界面实现方法
Jun 01 Javascript
在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法
Sep 10 Javascript
layui(1.0.9)文件上传upload,前后端的实例代码
Sep 26 Javascript
es6 for循环中let和var区别详解
Jan 12 Javascript
vue实现表格合并功能
Dec 01 Vue.js
Vue中使用import进行路由懒加载的原理分析
Apr 01 Vue.js
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
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
2013/04/13 PHP
从零开始学YII2框架(六)高级应用程序模板
2014/08/20 PHP
推荐十款免费 WordPress 插件
2015/03/24 PHP
使用PHP生成二维码的方法汇总
2015/07/22 PHP
使用Huagepage和PGO来提升PHP7的执行性能
2015/11/30 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
php curl发送请求实例方法
2019/08/01 PHP
PHP接入微信H5支付的方法示例
2019/10/28 PHP
php中get_object_vars()在数组的实例用法
2021/02/22 PHP
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
JavaScript实现简单的时钟实例代码
2013/11/23 Javascript
JS控制弹出新页面窗口位置和大小的方法
2015/03/02 Javascript
EasyUI 结合JS导出Excel文件的实现方法
2016/11/10 Javascript
Bootstrap如何激活导航状态
2017/03/22 Javascript
layui实现动态和静态分页
2018/04/28 Javascript
nodejs中方法和模块用法示例
2018/12/24 NodeJs
原生js实现购物车功能
2020/09/23 Javascript
Python中str.format()详解
2017/03/12 Python
Python2和Python3中print的用法示例总结
2017/10/25 Python
python创建列表和向列表添加元素的实现方法
2017/12/25 Python
Python+Turtle动态绘制一棵树实例分享
2018/01/16 Python
Pandas:DataFrame对象的基础操作方法
2018/06/07 Python
Django框架实现逆向解析url的方法
2018/07/04 Python
Python3.5内置模块之random模块用法实例分析
2019/04/26 Python
树莓派采用socket方式文件传输(python)
2019/06/22 Python
Python如何绘制日历图和热力图
2020/08/07 Python
深入剖析webstorage[html5的本地数据处理]
2016/07/11 HTML / CSS
Crocs美国官方网站:卡骆驰洞洞鞋
2017/08/04 全球购物
普师专业个人自荐信范文
2013/11/26 职场文书
初婚未育证明
2014/01/15 职场文书
先进个人获奖感言
2014/01/24 职场文书
教师自我反思材料
2014/02/14 职场文书
决心书标准格式
2014/03/11 职场文书
中央空调节能方案
2014/06/15 职场文书
离婚协议书怎样才有法律效力
2014/10/10 职场文书
美容院管理规章制度
2015/08/05 职场文书