From c25b6ccd6359af2ff9d360c94cc7f60ebac7a81d Mon Sep 17 00:00:00 2001 From: Cody Seibert Date: Thu, 30 Jun 2022 12:28:13 -0400 Subject: [PATCH] adding caching to the babel output --- src/index.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/index.js b/src/index.js index b3cff90..346ab4c 100644 --- a/src/index.js +++ b/src/index.js @@ -5,6 +5,7 @@ import path from 'path'; const pluginBabel = (options = {}) => ({ name: 'babel', setup(build, { transform } = {}) { + const cache = new Map(); const { filter = /.*/, namespace = '', config = {} } = options; const transformContents = ({ args, contents }) => { @@ -34,9 +35,17 @@ const pluginBabel = (options = {}) => ({ if (transform) return transformContents(transform); build.onLoad({ filter, namespace }, async args => { - const contents = await fs.promises.readFile(args.path, 'utf8'); + const key = args.path + let value = cache.get(key) + const input = await fs.promises.readFile(args.path, 'utf8'); + + if (!value || value.input !== input) { + let contents = transformContents({ args, contents: input }); + value = { input, output: contents } + cache.set(key, value) + } - return transformContents({ args, contents }); + return value.output }); } });