diff --git a/src/fs-cache.js b/src/fs-cache.js index 69530b4d..05b77130 100644 --- a/src/fs-cache.js +++ b/src/fs-cache.js @@ -15,6 +15,8 @@ const os = require("os"); const path = require("path"); const zlib = require("zlib"); +let defaultCacheDirectory = null; // Lazily instantiated when needed + /** * Read the contents from the compressed file. * @@ -161,13 +163,17 @@ const handleCache = function(directory, params, callback) { * * }); */ + module.exports = function(params, callback) { let directory; if (typeof params.directory === "string") { directory = params.directory; } else { - directory = findCacheDir({ name: "babel-loader" }) || os.tmpdir(); + if (defaultCacheDirectory === null) { + defaultCacheDirectory = findCacheDir({ name: "babel-loader" }) || os.tmpdir(); + } + directory = defaultCacheDirectory; } handleCache(directory, params, callback); diff --git a/src/resolve-rc.js b/src/resolve-rc.js index 30b84f8b..25a03c6b 100644 --- a/src/resolve-rc.js +++ b/src/resolve-rc.js @@ -10,6 +10,8 @@ const path = require("path"); const exists = require("./utils/exists")({}); const read = require("./utils/read")({}); +const cache = {}; + const find = function find(start, rel) { const file = path.join(start, rel); @@ -27,6 +29,9 @@ const find = function find(start, rel) { module.exports = function(loc, rel) { rel = rel || ".babelrc"; - - return find(loc, rel); + const cacheKey = `${loc}/${rel}`; + if (!(cacheKey in cache)) { + cache[cacheKey] = find(loc, rel); + } + return cache[cacheKey]; };