You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
'use strict'; const path = require('path'); const globby = require('globby'); const isPathCwd = require('is-path-cwd'); const isPathInCwd = require('is-path-in-cwd'); const pify = require('pify'); const rimraf = require('rimraf'); const pMap = require('p-map');
const rimrafP = pify(rimraf);
function safeCheck(file) { if (isPathCwd(file)) { throw new Error('Cannot delete the current working directory. Can be overridden with the `force` option.'); }
if (!isPathInCwd(file)) { throw new Error('Cannot delete files/folders outside the current working directory. Can be overridden with the `force` option.'); } }
const del = (patterns, options) => { options = Object.assign({}, options);
const {force, dryRun} = options; delete options.force; delete options.dryRun;
const mapper = file => { if (!force) { safeCheck(file); }
file = path.resolve(options.cwd || '', file);
if (dryRun) { return file; }
return rimrafP(file, {glob: false}).then(() => file); };
return globby(patterns, options).then(files => pMap(files, mapper, options)); };
module.exports = del; // TODO: Remove this for the next major release
module.exports.default = del;
module.exports.sync = (patterns, options) => { options = Object.assign({}, options);
const {force, dryRun} = options; delete options.force; delete options.dryRun;
return globby.sync(patterns, options).map(file => { if (!force) { safeCheck(file); }
file = path.resolve(options.cwd || '', file);
if (!dryRun) { rimraf.sync(file, {glob: false}); }
return file; }); };
|