某次我使用npm-check -u命令时,提示gulp-babel可以升级至8.0.0,升级后就是一堆连环报错,我只能暂时回退版本。今天恰巧碰见一篇相关的资料,终于顺利升级。
升级gulp-babel
版本 在《通过Github Actions使用Gulp压缩静态文件》 一文中介绍了通过gulp来压缩网站静态文件,当时使用的版本为gulp-babel@7.0.1
,实际上最新版本为8.0.0
,但是直接升级会报错。
根据最新资料的解决办法,首先安装新版 gulp-babel 和相关依赖。
1 npm install --save-dev gulp-babel @babel/core @babel/preset-env
修改gulpfile.js
文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 var gulp = require ('gulp' );var minifycss = require ('gulp-clean-css' );var uglify = require ('gulp-uglify' );var htmlmin = require ('gulp-htmlmin' );var htmlclean = require ('gulp-htmlclean' );var babel = require ('gulp-babel' );gulp.task ('minify-css' , function ( ) { var option = { rebase : false , compatibility : '*' , } return gulp.src ('./public/**/*.css' ) .pipe (minifycss ()) .pipe (gulp.dest ('./public' )); }); gulp.task ('minify-html' , function ( ) { var cleanOptions = { protect : /<\!--%fooTemplate\b.*?%-->/g , unprotect : /<script [^>]*\btype="text\/x-handlebars-template"[\s\S]+?<\/script>/ig } var minOption = { collapseWhitespace : true , collapseBooleanAttributes : true , removeEmptyAttributes : true , removeScriptTypeAttributes : true , removeStyleLinkTypeAttributes : true , removeComments : false , minifyJS : true , minifyCSS : true , minifyURLs : true }; return gulp.src ('./public/**/*.html' ) .pipe (htmlclean ()) .pipe (htmlmin ({ removeComments : true , minifyJS : true , minifyCSS : true , minifyURLs : true , })) .pipe (gulp.dest ('./public' )) }); gulp.task ('minify-js' , function ( ) { return gulp.src ('./public/**/*.js' ) .pipe (babel ({ presets : ['@babel/env' ] })) .pipe (uglify ()) .pipe (gulp.dest ('./public' )); }); gulp.task ('default' , gulp.parallel ('minify-html' , 'minify-css' , 'minify-js' ));
删除.babelrc
&修改package.json
删除.babelrc
文件,同时删除package.json
文件中的依赖项。
1 2 "babel-plugin-transform-remove-strict-mode" : "0.0.2" , "babel-preset-es2015" : "^6.24.1" ,
另外,安装gulp-clean-css
插件,移除之前的gulp-minify-css
和gulp-imagemin
插件。
因为我搜索了一下,发现gulp-minify-css
已经被弃用了,而图片压缩本站也用不上,因此一并删除。
解决JS生成路径错误 原文代码是:
1 2 3 gulp.task ('minify-js' , function ( ) { return gulp.src ('./public/js/**/*.js' )
这会导致压缩后的js文件直接出现在./public
文件夹,而不是覆盖./public/js/
目录中的文件,也就是说会存在两个相同的js文件。
解决办法是修改成:
1 2 3 gulp.task ('minify-js' , function ( ) { return gulp.src ('./public/**/*.js' )