-前言-
在写自己的个人网站用到了Gulp,因为会切换Windows与Mac操作系统,发现了其中的一些坑,就此分享也做一下记录。
-正文-
原文链接: Gulp在Mac与Windows上使用的区别.
目前我自己使用的是Gulp4。
dest方法的区别
在调用gulp.dest方法上,Mac与Windows上存在区别。首先贴一段我压缩js的代码来感受一下。
function minifyJs(relativePath){
let destPath = os.platform() == "darwin" ? path.parse(relativePath.replace(/bin/,"release")).dir : "release";
let combined = combiner.obj([
gulp.src(relativePath),
uglify(),
gulp.dest(destPath)
]);
combined.once("error",()=>{
gulp.src(relativePath)
.pipe(gulp.dest(destPath));
});
}
上面代码中darwin字符就是MacOS操作系统的标识符。Windows与Mac的dest方法都只接收目录,首先看下面一段代码
gulp.src("xx/xx.js")
gulp.dest("xx/xx.js")
//dest中虽然传入了看着像一个名为xx的js文件,但是在解析时还是将xx.js当作一个目录对待。
接着说,在Windows下向dest方法传入的目录path最终会将文件放到path + src中的路径所拼接。假设xx.js在xx/xx.js下,dest指向oo目录,最终xx.js的路径为oo/xx/xx.js。
在Mac上则不同,Mac上dest需要传入xx.js放到的具体目录之下。
//mac
gulp.src("xx/xx.js")
gulp.dest(oo)//xx.js路径:oo/xx.js
//windows
gulp.src("xx/xx.js")
gulp.dest(oo)//xx.js路径:oo/xx/xx.js