From e85c9b633a72afdc58c6ce3a483f8fcfe50caeca Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Wed, 14 Jan 2015 14:55:30 +1100 Subject: [PATCH] enable require hook cache by default - shove it into into a temp directory - don't cache require resolutions --- lib/6to5/register-cache.js | 36 ++++++++++++++++++++++++++++++++++++ lib/6to5/register.js | 14 ++++++-------- package.json | 1 - 3 files changed, 42 insertions(+), 9 deletions(-) create mode 100644 lib/6to5/register-cache.js diff --git a/lib/6to5/register-cache.js b/lib/6to5/register-cache.js new file mode 100644 index 0000000000..992e24cf4e --- /dev/null +++ b/lib/6to5/register-cache.js @@ -0,0 +1,36 @@ +"use strict"; + +var path = require("path"); +var os = require("os"); +var fs = require("fs"); + +var FILENAME = path.join(os.tmpdir(), "6to5.json"); +var data = {}; + +exports.save = function () { + fs.writeFileSync(FILENAME, JSON.stringify(data, null, " ")); +}; + +exports.load = function () { + if (!fs.existsSync(FILENAME)) return; + + try { + data = JSON.parse(fs.readFileSync(FILENAME)); + } catch (err) { + return; + } + + process.on("exit", exports.save); + + var sigint = function () { + process.removeListener("SIGINT", sigint); + exports.save(); + process.kill(process.pid, "SIGINT"); + }; + + process.on("SIGINT", sigint); +}; + +exports.get = function () { + return data; +}; diff --git a/lib/6to5/register.js b/lib/6to5/register.js index d73532e1e9..06515c8827 100644 --- a/lib/6to5/register.js +++ b/lib/6to5/register.js @@ -1,7 +1,7 @@ require("./polyfill"); var sourceMapSupport = require("source-map-support"); -var roadrunner = require("roadrunner"); +var registerCache = require("./register-cache"); var util = require("./util"); var to5 = require("./index"); var fs = require("fs"); @@ -66,11 +66,15 @@ blacklistTest("unicodeRegex", function () { new RegExp("foo", "u"); }); // +registerCache.load(); +var cache = registerCache.get(); + +// + var transformOpts = {}; var ignoreRegex = /node_modules/; var onlyRegex; var whitelist = []; -var cache; var exts = {}; var maps = {}; var old = require.extensions[".js"]; @@ -136,13 +140,7 @@ module.exports = function (opts) { if (opts.extensions) hookExtensions(util.arrayify(opts.extensions)); - if (opts.cache) cache = opts.cache; if (opts.cache === false) cache = null; - if (opts.cache === true) { - roadrunner.load(); - roadrunner.setup(); - cache = roadrunner.get("6to5"); - } _.extend(transformOpts, opts); }; diff --git a/package.json b/package.json index e387b2052b..a81e4bf6c8 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,6 @@ "private": "0.1.6", "regenerator": "^0.8.3", "regexpu": "0.3.0", - "roadrunner": "^1.0.4", "source-map": "0.1.40", "source-map-support": "0.2.8" },