helpers.js 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.transformFiles = exports.reduceChunk = exports.reduceAssets = exports.generateManifest = void 0;
  4. const path_1 = require("path");
  5. const generateManifest = (compilation, files, { generate, seed = {} }) => {
  6. let result;
  7. if (generate) {
  8. const entrypointsArray = Array.from(compilation.entrypoints.entries());
  9. const entrypoints = entrypointsArray.reduce((e, [name, entrypoint]) => Object.assign(e, { [name]: entrypoint.getFiles() }), {});
  10. result = generate(seed, files, entrypoints);
  11. }
  12. else {
  13. result = files.reduce((manifest, file) => Object.assign(manifest, { [file.name]: file.path }), seed);
  14. }
  15. return result;
  16. };
  17. exports.generateManifest = generateManifest;
  18. const getFileType = (fileName, { transformExtensions }) => {
  19. const replaced = fileName.replace(/\?.*/, '');
  20. const split = replaced.split('.');
  21. const extension = split.pop();
  22. return transformExtensions.test(extension) ? `${split.pop()}.${extension}` : extension;
  23. };
  24. const reduceAssets = (files, asset, moduleAssets) => {
  25. let name;
  26. if (moduleAssets[asset.name]) {
  27. name = moduleAssets[asset.name];
  28. }
  29. else if (asset.info.sourceFilename) {
  30. name = path_1.join(path_1.dirname(asset.name), path_1.basename(asset.info.sourceFilename));
  31. }
  32. if (name) {
  33. return files.concat({
  34. isAsset: true,
  35. isChunk: false,
  36. isInitial: false,
  37. isModuleAsset: true,
  38. name,
  39. path: asset.name
  40. });
  41. }
  42. const isEntryAsset = asset.chunks && asset.chunks.length > 0;
  43. if (isEntryAsset) {
  44. return files;
  45. }
  46. return files.concat({
  47. isAsset: true,
  48. isChunk: false,
  49. isInitial: false,
  50. isModuleAsset: false,
  51. name: asset.name,
  52. path: asset.name
  53. });
  54. };
  55. exports.reduceAssets = reduceAssets;
  56. const reduceChunk = (files, chunk, options, auxiliaryFiles) => {
  57. Array.from(chunk.auxiliaryFiles || []).forEach((auxiliaryFile) => {
  58. auxiliaryFiles[auxiliaryFile] = {
  59. isAsset: true,
  60. isChunk: false,
  61. isInitial: false,
  62. isModuleAsset: true,
  63. name: path_1.basename(auxiliaryFile),
  64. path: auxiliaryFile
  65. };
  66. });
  67. return Array.from(chunk.files).reduce((prev, path) => {
  68. let name = chunk.name ? chunk.name : null;
  69. name = name
  70. ? options.useEntryKeys && !path.endsWith('.map')
  71. ? name
  72. : `${name}.${getFileType(path, options)}`
  73. : path;
  74. return prev.concat({
  75. chunk,
  76. isAsset: false,
  77. isChunk: true,
  78. isInitial: chunk.isOnlyInitial(),
  79. isModuleAsset: false,
  80. name,
  81. path
  82. });
  83. }, files);
  84. };
  85. exports.reduceChunk = reduceChunk;
  86. const standardizeFilePaths = (file) => {
  87. const result = Object.assign({}, file);
  88. result.name = file.name.replace(/\\/g, '/');
  89. result.path = file.path.replace(/\\/g, '/');
  90. return result;
  91. };
  92. const transformFiles = (files, options) => ['filter', 'map', 'sort']
  93. .filter((fname) => !!options[fname])
  94. .reduce((prev, fname) => prev[fname](options[fname]), files)
  95. .map(standardizeFilePaths);
  96. exports.transformFiles = transformFiles;
  97. //# sourceMappingURL=helpers.js.map