Webpack4Cache.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _os = _interopRequireDefault(require("os"));
  7. var _cacache = _interopRequireDefault(require("cacache"));
  8. var _findCacheDir = _interopRequireDefault(require("find-cache-dir"));
  9. var _serializeJavascript = _interopRequireDefault(require("serialize-javascript"));
  10. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  11. class Webpack4Cache {
  12. constructor(compiler, compilation, options) {
  13. this.options = options;
  14. this.cacheDir = options.cache === true ? Webpack4Cache.getCacheDirectory() : options.cache;
  15. }
  16. static getCacheDirectory() {
  17. return (0, _findCacheDir.default)({
  18. name: 'terser-webpack-plugin'
  19. }) || _os.default.tmpdir();
  20. }
  21. isEnabled() {
  22. return !!this.cacheDir;
  23. }
  24. get(task) {
  25. // eslint-disable-next-line no-param-reassign
  26. task.cacheIdent = task.cacheIdent || (0, _serializeJavascript.default)(task.cacheKeys);
  27. return _cacache.default.get(this.cacheDir, task.cacheIdent).then(({
  28. data
  29. }) => JSON.parse(data));
  30. }
  31. store(task, data) {
  32. return _cacache.default.put(this.cacheDir, task.cacheIdent, JSON.stringify(data));
  33. }
  34. }
  35. exports.default = Webpack4Cache;