getBuildStats.js 1.65 KB
Newer Older
YazhouChen's avatar
YazhouChen committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
'use strict';

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = getBuildStats;

var _path = require('path');

var _path2 = _interopRequireDefault(_path);

var _sortChunks = require('./sortChunks');

var _sortChunks2 = _interopRequireDefault(_sortChunks);

var _getAffectedModuleIds = require('./getAffectedModuleIds');

var _getAffectedModuleIds2 = _interopRequireDefault(_getAffectedModuleIds);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

function getBuildStats(stats, outputPath) {
  var _stats$compilation = stats.compilation,
      chunks = _stats$compilation.chunks,
      modules = _stats$compilation.modules;


  var sortedChunks = (0, _sortChunks2.default)(chunks);
  var affectedModules = (0, _getAffectedModuleIds2.default)(chunks, modules);

  var entries = [];
  var js = [];
  var pathHelper = function pathHelper(f) {
    return _path2.default.join(outputPath, f);
  };

  sortedChunks.forEach(function (chunk) {
    var files = Array.isArray(chunk.files) ? chunk.files : [chunk.files];

    if (chunk.isInitial ? chunk.isInitial() : chunk.initial) {
      // only entry files
      var entry = files[0];
      entries.push(entry);
    }

    if ((chunk.getModules ? chunk.getModules() : chunk.modules).some(function (module) {
      return affectedModules.indexOf(module.id) !== -1;
    })) {
      files.forEach(function (file) {
        if (/\.js$/.test(file)) {
          js.push(file);
        }
      });
    }
  });

  var buildStats = {
    affectedModules: affectedModules,
    affectedFiles: js.map(pathHelper),
    entries: entries.map(pathHelper)
  };

  return buildStats;
}