From ccbf9273fe463672d66a141854964b1e66afb3ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Bigio?= Date: Wed, 17 Feb 2016 10:00:35 -0800 Subject: [PATCH] Introduce transformer `cacheKey` Summary:public At the moment, the packager's cache can only be broken by changing packager's `package.json` version,by supplying a different `cacheKey` or by updating the `mtime` of the transformer. We need to add support for breaking the cache key when a plugin the transformer use gets updated. To do so, lets introduce a property on the transformer, namely `cacheKey`. Reviewed By: davidaurelio Differential Revision: D2940267 fb-gh-sync-id: 82c937d06c73abd32708bf97afe5f308c2a3b565 shipit-source-id: 82c937d06c73abd32708bf97afe5f308c2a3b565 --- react-packager/src/Bundler/index.js | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/react-packager/src/Bundler/index.js b/react-packager/src/Bundler/index.js index bc25ab1d..6285fcc2 100644 --- a/react-packager/src/Bundler/index.js +++ b/react-packager/src/Bundler/index.js @@ -103,15 +103,24 @@ class Bundler { mtime = ''; } + const cacheKeyParts = [ + 'react-packager-cache', + version, + opts.cacheVersion, + opts.projectRoots.join(',').split(path.sep).join('-'), + mtime, + ]; + + if (opts.transformModulePath) { + const transformer = require(opts.transformModulePath); + if (typeof transformer.cacheKey !== 'undefined') { + cacheKeyParts.push(transformer.cacheKey); + } + } + this._cache = new Cache({ resetCache: opts.resetCache, - cacheKey: [ - 'react-packager-cache', - version, - opts.cacheVersion, - opts.projectRoots.join(',').split(path.sep).join('-'), - mtime - ].join('$'), + cacheKey: cacheKeyParts.join('$'), }); this._resolver = new Resolver({