From d5666912d42398fb7027782f2ea600250ec21d83 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Thu, 4 Dec 2014 10:17:04 +1100 Subject: [PATCH] Add cache option to 6to5-node --- lib/6to5/register.js | 23 ++++++++++++++++++++++- package.json | 19 ++++++++++--------- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/lib/6to5/register.js b/lib/6to5/register.js index 86035276b5..1227eca5fa 100644 --- a/lib/6to5/register.js +++ b/lib/6to5/register.js @@ -1,8 +1,10 @@ require("./polyfill"); var sourceMapSupport = require("source-map-support"); +var roadrunner = require('roadrunner'); var util = require("./util"); var to5 = require("./index"); +var fs = require("fs"); var _ = require("lodash"); sourceMapSupport.install({ @@ -61,22 +63,38 @@ var transformOpts = {}; var ignoreRegex = /node_modules/; var onlyRegex; var whitelist = []; +var cache; var exts = {}; var maps = {}; var old = require.extensions[".js"]; +var mtime = function (filename) { + return +fs.statSync(filename).mtime; +}; + var loader = function (m, filename) { if ((ignoreRegex && ignoreRegex.test(filename)) || (onlyRegex && !onlyRegex.test(filename))) { return old.apply(this, arguments); } - var result = to5.transformFileSync(filename, _.extend({ + var result; + + if (cache && cache[filename].mtime === mtime(filename)) { + result = cache[filename]; + } + + result = result || to5.transformFileSync(filename, _.extend({ whitelist: whitelist, blacklist: blacklist, sourceMap: true, modules: "commonInterop" }, transformOpts)); + if (cache) { + result.mtime = mtime(filename); + cache[filename] = result; + } + maps[filename] = result.map; m._compile(result.code, filename); @@ -108,5 +126,8 @@ module.exports = function (opts) { if (opts.extensions) hookExtensions(util.arrayify(opts.extensions)); + if (opts.cache) cache = roadrunner.get('6to5'); + if (opts.cache === false) cache = null; + _.extend(transformOpts, opts); }; diff --git a/package.json b/package.json index 14b88a6255..d966b77014 100644 --- a/package.json +++ b/package.json @@ -35,26 +35,27 @@ "test": "make test" }, "dependencies": { + "acorn-6to5": "0.9.1-11", "ast-types": "0.6.5", + "chokidar": "0.11.1", "commander": "2.5.0", + "es6-shim": "0.21.0", + "es6-symbol": "0.1.1", + "estraverse": "1.8.0", + "esutils": "1.1.6", "fs-readdir-recursive": "0.1.0", "lodash": "2.4.1", "mkdirp": "0.5.0", - "es6-shim": "0.21.0", - "es6-symbol": "0.1.1", + "private": "0.1.6", "regexpu": "0.3.0", + "roadrunner": "^1.0.4", "source-map": "0.1.40", - "chokidar": "0.11.1", - "source-map-support": "0.2.8", - "esutils": "1.1.6", - "acorn-6to5": "0.9.1-11", - "estraverse": "1.8.0", - "private": "0.1.6" + "source-map-support": "0.2.8" }, "devDependencies": { "istanbul": "0.3.2", "matcha": "0.6.0", - "mocha": "2.0.1", + "mocha": "1.21.4", "uglify-js": "2.4.15", "browserify": "6.3.2", "rimraf": "2.2.8",