使用gulp 执行项目构建时遇到报错:
GulpUglifyError: unable to minify JavaScript
Caused by: DefaultsError: `warnings` is not a supported option
经查询应该是uglify-js新版本(我这装的是3.13.10)对以下gulpfile.js中的代码片段写法不支持:
uglify({ compress: { warnings: false, drop_console: true, // 过滤 console drop_debugger: true, // 过滤 debugger }, })
上面的这种写法在uglify-js的老版本中是可以的(我之前用的是3.4.10)
应改为:
uglify({ warnings: false, compress: { drop_console: true, // 过滤 console drop_debugger: true, // 过滤 debugger }, })
报错的项目和之前正常的项目同样使用了gulp-uglify 3.0.1版,而gulp-uglify中的package.json表明其依赖:
"dependencies": { "gulplog": "^1.0.0", "has-gulplog": "^0.1.0", "lodash": "^4.13.1", "make-error-cause": "^1.1.1", "safe-buffer": "^5.1.2", "through2": "^2.0.0", "uglify-js": "^3.0.5", "vinyl-sourcemaps-apply": "^0.2.0" },
注意这里uglify-js的版本前面的^,表示npm install 时会安装3.x.x的最新版本。
而我安装时uglify-js最新版本是3.13.10,于是发生了上面的问题,但是我同事那边也同样的方式安装,不知道为什么他装的是3.4.10,不知道是不是npm安装有缓存的机制。