gulp-检查文件大小写

前提:因为公司的静态资源保存在某云上,要求文件名不能包含大写字母,所以需要在前端的构建上进行文件检查。
工具:gulp + gulp-rename 即可实现,剩余的插件是顺序执行(run-sequence)缓存(gulp-changed),log提示(gulp-util)。
原理:使用gulp.src拿到文件,使用rename拿到文件名,用正则进行匹配,返回结果,再结束任务就行啦。

具体源码如下:

var gulp = require('gulp'),
uppercaseCount = 0,
rename = require('gulp-rename'),
gutil = require('gulp-util'),
changed = require('gulp-changed'),
runSequence = require('run-sequence');
//源文件路径
var sourcePath = 'content/hybrid/';
var paths = {
    styles: sourcePath + 'styles/**/*.css',
    images: sourcePath + 'images/**/*.{jpg,png,gif}',
};
//正则匹配大小写,并打印文件名
function Check_uppercase(path) {
    if (/[A-Z]/.test(path.dirname) || /[A-Z]/.test(path.basename) || /[A-Z]/.test(path.extname)) {
        gutil.log(gutil.colors.magenta(path.dirname + '/' + path.basename + path.extname));
        return 'true';
    }
}
//分目录检查
gulp.task('checkUppercase-img', function() {
    return gulp.src(paths.images).pipe(changed(paths.images)).pipe(rename(function(path) {
        if (Check_uppercase(path)) {
            uppercaseCount = uppercaseCount + 1;
        }
    }));
});
gulp.task('checkUppercase-css', function() {
    return gulp.src(paths.styles).pipe(changed(paths.styles)).pipe(rename(function(path) {
        if (Check_uppercase(path)) {
            uppercaseCount = uppercaseCount + 1;
        }
    }));
});
//顺序进行并调用
gulp.task('checkUppercase', function() {
    runSequence('checkUppercase-img', 'checkUppercase-css', function() {
        if (uppercaseCount > 0) {
            gutil.log(gutil.colors.magenta('文件有大写,请修改重试~'));
            process.exit(1);
        }
    });
});

你可能感兴趣的:(gulp-检查文件大小写)