"use strict"; const escapeStringRegexp = require("escape-string-regexp"); const assureArray = require("assure-array"); let viewPathRegexes = new Map(); function generateRegex(paths) { let pathRegexes = assureArray(paths) .map((path) => `^${escapeStringRegexp(path)}`) .join("|"); return new RegExp(pathRegexes); } function clearCacheByRegex(regex) { for (let [key, entry] in Object.entries(regex)) { if (regex.test(entry.filename) === true) { delete require.cache[key]; } } } module.exports = function clearRequireCache(viewPaths) { if (!viewPathRegexes.has(viewPaths)) { viewPathRegexes.set(viewPathRegexes, generateRegex(viewPaths)); } clearCacheByRegex(viewPathRegexes.get(viewPathRegexes)); };