lilacs
Version:
A web frontend building tool for teamwork, with automaticly compiling, merging, minifying, syncing files to server, supporting distributed servers, ensuring css or html files' inline reference with correct absolute path, and more.
54 lines (42 loc) • 1.84 kB
JavaScript
var fsExtra = require('fs-extra');
var _ = require('lodash');
var rd = require('rd');
var vars = require('../../data/vars');
var pathUtil = require('../../util/path');
var extractHashCodes = require('../../util/extract_hash_codes');
var cleanData = require('../../data/clean');
var cleanMatches = require('../../util/clean_matches');
module.exports = (gulp) => {
// here should be named function, otherwise in the command line will show anonymous function
var doClean = (cb) => {
// all hash codes
var hashCodes = _.uniq(extractHashCodes(cleanData.config.hashLength));
var deletedFilesCount = 0;
var doDelete = (dir) => {
rd.eachFileFilterSync(dir, (file) => {
// file path
var filePath = pathUtil.replaceBackSlash(file);
var lastSlashIndex = filePath.lastIndexOf('/');
var fileName = lastSlashIndex == -1 ? filePath: filePath.slice(lastSlashIndex + 1);
var regExp = cleanMatches.newFileName(cleanData.config.hashLength);
var result = regExp.exec(fileName);
if (!result) return;
// not in use, remove it
if (hashCodes.indexOf(result[1]) < 0) {
fsExtra.removeSync(file);
logger.info('deleted file: ' + file);
deletedFilesCount += 1;
}
});
};
// css directory
doDelete(vars.projectRoot + '/dist/css');
// js directory
doDelete(vars.projectRoot + '/dist/js');
deletedFilesCount && logger.log('');
logger.success(`${deletedFilesCount} redundant files are deleted successfully.`);
cb();
};
// register clean task
gulp.task('clean', gulp.series('pre_archive', doClean));
};