From 0798b430dbe2fd185f0fadafbc860c6325d3e03b Mon Sep 17 00:00:00 2001 From: aganeshalingam Date: Tue, 9 Apr 2019 21:07:03 -0700 Subject: [PATCH 1/3] Adding cache --- src/index.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/index.js b/src/index.js index 9621263..4f8fc6c 100644 --- a/src/index.js +++ b/src/index.js @@ -5,6 +5,8 @@ const cachingFS = require('lasso-caching-fs'); const stripJsonComments = require('strip-json-comments'); const lassoPackageRoot = require('lasso-package-root'); const readOptions = { encoding: 'utf8' }; +const isDev = !process.env.NODE_ENV || process.env.NODE_ENV === 'development'; +const caches = new WeakMap(); let babel; @@ -41,12 +43,25 @@ module.exports = { return function lassoBabelTransform(code, lassoContext) { let filename = lassoContext.filename; + let lasso = lassoContext.lasso; + let cache = !isDev && ( + caches.get(lasso) || (() => { + const cache = {}; + caches.set(lasso, cache); + return cache + })() + ); + let cachedCode; if (!filename || !extensions.hasOwnProperty(path.extname(filename))) { // This shouldn't be the case return code; } + if (cache && (cachedCode = cache[filename])) { + return cachedCode; + } + let babelOptions = transformConfig.babelOptions; let curDir = path.dirname(filename); @@ -103,14 +118,17 @@ module.exports = { babelOptions.filename = path.relative(curDir, filename); babelOptions.babelrc = false; let babel = getBabel(); - + // console.log("babel file ==> ", curDir, babelOptions.filename); let result = babel.transformSync(code, babelOptions); if(result == null) { // "ignore" and "only" disable ALL babel processing of a file // e.g. => .babelrc = { "only": ["included/**"] } // transform('excluded/foo.js') will return null + cache && (cache[filename] = code); return code; } + + cache && (cache[filename] = result.code); return result.code; }; } From 6173d45c26aef126081e711d987d6e76fcca6f4f Mon Sep 17 00:00:00 2001 From: aganeshalingam Date: Tue, 9 Apr 2019 21:07:03 -0700 Subject: [PATCH 2/3] Adding cache --- src/index.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/index.js b/src/index.js index 9621263..4f8fc6c 100644 --- a/src/index.js +++ b/src/index.js @@ -5,6 +5,8 @@ const cachingFS = require('lasso-caching-fs'); const stripJsonComments = require('strip-json-comments'); const lassoPackageRoot = require('lasso-package-root'); const readOptions = { encoding: 'utf8' }; +const isDev = !process.env.NODE_ENV || process.env.NODE_ENV === 'development'; +const caches = new WeakMap(); let babel; @@ -41,12 +43,25 @@ module.exports = { return function lassoBabelTransform(code, lassoContext) { let filename = lassoContext.filename; + let lasso = lassoContext.lasso; + let cache = !isDev && ( + caches.get(lasso) || (() => { + const cache = {}; + caches.set(lasso, cache); + return cache + })() + ); + let cachedCode; if (!filename || !extensions.hasOwnProperty(path.extname(filename))) { // This shouldn't be the case return code; } + if (cache && (cachedCode = cache[filename])) { + return cachedCode; + } + let babelOptions = transformConfig.babelOptions; let curDir = path.dirname(filename); @@ -103,14 +118,17 @@ module.exports = { babelOptions.filename = path.relative(curDir, filename); babelOptions.babelrc = false; let babel = getBabel(); - + // console.log("babel file ==> ", curDir, babelOptions.filename); let result = babel.transformSync(code, babelOptions); if(result == null) { // "ignore" and "only" disable ALL babel processing of a file // e.g. => .babelrc = { "only": ["included/**"] } // transform('excluded/foo.js') will return null + cache && (cache[filename] = code); return code; } + + cache && (cache[filename] = result.code); return result.code; }; } From 912e16ec1e1fbfdc0b393bca614f1f2581de01ed Mon Sep 17 00:00:00 2001 From: aganeshalingam Date: Tue, 9 Apr 2019 21:07:03 -0700 Subject: [PATCH 3/3] Adding cache --- src/index.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/index.js b/src/index.js index 9621263..4f8fc6c 100644 --- a/src/index.js +++ b/src/index.js @@ -5,6 +5,8 @@ const cachingFS = require('lasso-caching-fs'); const stripJsonComments = require('strip-json-comments'); const lassoPackageRoot = require('lasso-package-root'); const readOptions = { encoding: 'utf8' }; +const isDev = !process.env.NODE_ENV || process.env.NODE_ENV === 'development'; +const caches = new WeakMap(); let babel; @@ -41,12 +43,25 @@ module.exports = { return function lassoBabelTransform(code, lassoContext) { let filename = lassoContext.filename; + let lasso = lassoContext.lasso; + let cache = !isDev && ( + caches.get(lasso) || (() => { + const cache = {}; + caches.set(lasso, cache); + return cache + })() + ); + let cachedCode; if (!filename || !extensions.hasOwnProperty(path.extname(filename))) { // This shouldn't be the case return code; } + if (cache && (cachedCode = cache[filename])) { + return cachedCode; + } + let babelOptions = transformConfig.babelOptions; let curDir = path.dirname(filename); @@ -103,14 +118,17 @@ module.exports = { babelOptions.filename = path.relative(curDir, filename); babelOptions.babelrc = false; let babel = getBabel(); - + // console.log("babel file ==> ", curDir, babelOptions.filename); let result = babel.transformSync(code, babelOptions); if(result == null) { // "ignore" and "only" disable ALL babel processing of a file // e.g. => .babelrc = { "only": ["included/**"] } // transform('excluded/foo.js') will return null + cache && (cache[filename] = code); return code; } + + cache && (cache[filename] = result.code); return result.code; }; }