stats.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.uniStatsPlugin = void 0;
  4. const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
  5. const emittedHashMap = new WeakMap();
  6. function uniStatsPlugin() {
  7. let resolvedConfig;
  8. return {
  9. name: 'uni:app-stats',
  10. enforce: 'post',
  11. configResolved(config) {
  12. resolvedConfig = config;
  13. emittedHashMap.set(resolvedConfig, new Map());
  14. },
  15. writeBundle(_, bundle) {
  16. if (resolvedConfig.isProduction) {
  17. // 仅dev生效
  18. return;
  19. }
  20. const emittedHash = emittedHashMap.get(resolvedConfig);
  21. const changedFiles = [];
  22. Object.keys(bundle).forEach((filename) => {
  23. const outputFile = bundle[filename];
  24. let outputFileHash = '';
  25. if (outputFile.type === 'asset') {
  26. outputFileHash = (0, uni_cli_shared_1.hash)(outputFile.source);
  27. }
  28. else {
  29. outputFileHash = (0, uni_cli_shared_1.hash)(outputFile.code);
  30. }
  31. if (emittedHash.get(filename) !== outputFileHash) {
  32. emittedHash.set(filename, outputFileHash);
  33. changedFiles.push(filename);
  34. }
  35. });
  36. process.env.UNI_APP_CHANGED_FILES = changedFiles.length
  37. ? JSON.stringify(changedFiles)
  38. : '';
  39. },
  40. };
  41. }
  42. exports.uniStatsPlugin = uniStatsPlugin;