-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathclean.js
More file actions
36 lines (31 loc) · 962 Bytes
/
clean.js
File metadata and controls
36 lines (31 loc) · 962 Bytes
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
const glob = require('glob');
const path = require('path');
const rimraf = require('rimraf');
const { getUniqueDirectories, getRootFiles, printLn, handleError } = require('./utils');
function clean({
scanPattern,
ignorePattern,
directoryToScan,
outputDirectory,
} = {}){
glob(scanPattern, {
// Restrict scan directory
cwd: directoryToScan,
// Retrieve relative paths
absolute: false,
// Ignore files by pattern
ignore: ignorePattern,
}, (err, files) => {
if(err) return handleError(err);
const rootFiles = getRootFiles(files);
const directories = getUniqueDirectories(files);
const rimrafFiles = directories.concat(rootFiles);
const rimrafPattern = path.join(outputDirectory, `{${rimrafFiles.join(',')}}`);
return rimraf(rimrafPattern, (err) => {
if (err) return handleError(err);
printLn(`${rimrafFiles.length} Files cleaned!`);
return 0;
});
})
}
module.exports = clean;