Skip to content

Commit 58e8216

Browse files
committed
Replace mkdirp to fs.mkdir with recursive option
1 parent 2f26478 commit 58e8216

File tree

4 files changed

+22
-6
lines changed

4 files changed

+22
-6
lines changed

karma.conf.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
const fs = require('fs');
44
const path = require('path');
5-
const mkdirp = require('mkdirp');
65
const os = require('os');
6+
const utils = require('./lib/utils');
77
const baseBundleDirpath = path.join(__dirname, '.karma');
88

99
const hostname = os.hostname();
@@ -111,7 +111,7 @@ module.exports = config => {
111111
console.error('No SauceLabs credentials present');
112112
}
113113
}
114-
mkdirp.sync(bundleDirpath);
114+
utils.mkdir(bundleDirpath);
115115
} else {
116116
console.error('CI mode disabled');
117117
}

lib/cli/init.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
const fs = require('fs');
1111
const path = require('path');
12-
const mkdirp = require('mkdirp');
12+
const utils = require('../utils');
1313

1414
exports.command = 'init <path>';
1515

@@ -24,7 +24,7 @@ exports.builder = yargs =>
2424
exports.handler = argv => {
2525
const destdir = argv.path;
2626
const srcdir = path.join(__dirname, '..', '..');
27-
mkdirp.sync(destdir);
27+
utils.mkdir(destdir);
2828
const css = fs.readFileSync(path.join(srcdir, 'mocha.css'));
2929
const js = fs.readFileSync(path.join(srcdir, 'mocha.js'));
3030
const tmpl = fs.readFileSync(

lib/utils.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -853,3 +853,20 @@ exports.supportsEsModules = function() {
853853
}
854854
}
855855
};
856+
857+
/**
858+
* Recursively mkdir, like `mkdirp`
859+
*
860+
* @description
861+
* This function is to create a new directory and any necessary subdirectories at the directory.
862+
* `fs.mkdir` with {recursive: true} can be a replacement for vulnerable `mkdirp`.
863+
*
864+
* @private
865+
* @param {string} pathname - Directory path to create.
866+
* @returns {undefined} void
867+
*/
868+
exports.mkdir = function(pathname) {
869+
if (!fs.existsSync(pathname)) {
870+
fs.mkdirSync(pathname, {recursive: true});
871+
}
872+
};

test/integration/file-utils.spec.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ var utils = require('../../lib/utils');
44
var fs = require('fs');
55
var path = require('path');
66
var os = require('os');
7-
var mkdirp = require('mkdirp');
87
var rimraf = require('rimraf');
98

109
describe('file utils', function() {
@@ -119,7 +118,7 @@ describe('file utils', function() {
119118
afterEach(removeTempDir);
120119

121120
function makeTempDir() {
122-
mkdirp.sync(tmpDir);
121+
utils.mkdir(tmpDir);
123122
}
124123

125124
function removeTempDir() {

0 commit comments

Comments
 (0)