Browse Source

Enable complex glob pattern matching on clean

pull/6038/head
Arman Ozak 6 years ago
parent
commit
2d5561f717
  1. 49
      npm/packs/aspnetcore.mvc.ui/gulp/copy-resources.js

49
npm/packs/aspnetcore.mvc.ui/gulp/copy-resources.js

@ -4,7 +4,9 @@
var gulp = require("gulp"),
merge = require("merge-stream"),
rimraf = require("rimraf"),
fse = require('fs-extra'),
glob = require('glob'),
micromatch = require('micromatch'),
path = require("path"),
extendObject = require('extend-object');
@ -41,13 +43,42 @@
return undefined;
}
}
function cleanFiles() {
if (resourceMapping.clean) {
for (var i = 0; i < resourceMapping.clean.length; i++) {
rimraf.sync(replaceAliases(resourceMapping.clean[i]) + '/**/*', { force: true });
}
}
function cleanDirsAndFiles(patterns) {
const { dirs, files } = findDirsAndFiles(patterns);
files.forEach(file => fse.unlinkSync(file));
dirs.forEach(dir => {
try {
fse.rmdirSync(dir);
} catch (_) {}
});
}
function findDirsAndFiles(patterns) {
const dirs = [];
const files = [];
const list = glob.sync('**/*', { dot: true });
const matches = micromatch(list, normalizeGlob(patterns), {
dot: true,
});
matches.forEach(match => {
if (!fse.pathExistsSync(match)) return;
(fse.statSync(match).isDirectory() ? dirs : files).push(match);
});
return { dirs, files };
}
function normalizeGlob(patterns) {
return patterns.map(pattern => {
const prefix = /\*$/.test(pattern) ? '' : '/**';
return replaceAliases(pattern).replace(/(!?)\.\//, '$1') + prefix;
});
}
function normalizeResourceMapping(resourcemapping) {
@ -106,7 +137,7 @@
rootPath = path;
resourceMapping = normalizeResourceMapping(buildResourceMapping(rootPath));
cleanFiles();
cleanDirsAndFiles(resourceMapping.clean);
var tasks = [];

Loading…
Cancel
Save