You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
3.3 KiB
97 lines
3.3 KiB
2 years ago
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.transformFiles = exports.reduceChunk = exports.reduceAssets = exports.generateManifest = void 0;
|
||
|
const path_1 = require("path");
|
||
|
const generateManifest = (compilation, files, { generate, seed = {} }) => {
|
||
|
let result;
|
||
|
if (generate) {
|
||
|
const entrypointsArray = Array.from(compilation.entrypoints.entries());
|
||
|
const entrypoints = entrypointsArray.reduce((e, [name, entrypoint]) => Object.assign(e, { [name]: entrypoint.getFiles() }), {});
|
||
|
result = generate(seed, files, entrypoints);
|
||
|
}
|
||
|
else {
|
||
|
result = files.reduce((manifest, file) => Object.assign(manifest, { [file.name]: file.path }), seed);
|
||
|
}
|
||
|
return result;
|
||
|
};
|
||
|
exports.generateManifest = generateManifest;
|
||
|
const getFileType = (fileName, { transformExtensions }) => {
|
||
|
const replaced = fileName.replace(/\?.*/, '');
|
||
|
const split = replaced.split('.');
|
||
|
const extension = split.pop();
|
||
|
return transformExtensions.test(extension) ? `${split.pop()}.${extension}` : extension;
|
||
|
};
|
||
|
const reduceAssets = (files, asset, moduleAssets) => {
|
||
|
let name;
|
||
|
if (moduleAssets[asset.name]) {
|
||
|
name = moduleAssets[asset.name];
|
||
|
}
|
||
|
else if (asset.info.sourceFilename) {
|
||
|
name = path_1.join(path_1.dirname(asset.name), path_1.basename(asset.info.sourceFilename));
|
||
|
}
|
||
|
if (name) {
|
||
|
return files.concat({
|
||
|
isAsset: true,
|
||
|
isChunk: false,
|
||
|
isInitial: false,
|
||
|
isModuleAsset: true,
|
||
|
name,
|
||
|
path: asset.name
|
||
|
});
|
||
|
}
|
||
|
const isEntryAsset = asset.chunks && asset.chunks.length > 0;
|
||
|
if (isEntryAsset) {
|
||
|
return files;
|
||
|
}
|
||
|
return files.concat({
|
||
|
isAsset: true,
|
||
|
isChunk: false,
|
||
|
isInitial: false,
|
||
|
isModuleAsset: false,
|
||
|
name: asset.name,
|
||
|
path: asset.name
|
||
|
});
|
||
|
};
|
||
|
exports.reduceAssets = reduceAssets;
|
||
|
const reduceChunk = (files, chunk, options, auxiliaryFiles) => {
|
||
|
Array.from(chunk.auxiliaryFiles || []).forEach((auxiliaryFile) => {
|
||
|
auxiliaryFiles[auxiliaryFile] = {
|
||
|
isAsset: true,
|
||
|
isChunk: false,
|
||
|
isInitial: false,
|
||
|
isModuleAsset: true,
|
||
|
name: path_1.basename(auxiliaryFile),
|
||
|
path: auxiliaryFile
|
||
|
};
|
||
|
});
|
||
|
return Array.from(chunk.files).reduce((prev, path) => {
|
||
|
let name = chunk.name ? chunk.name : null;
|
||
|
name = name
|
||
|
? options.useEntryKeys && !path.endsWith('.map')
|
||
|
? name
|
||
|
: `${name}.${getFileType(path, options)}`
|
||
|
: path;
|
||
|
return prev.concat({
|
||
|
chunk,
|
||
|
isAsset: false,
|
||
|
isChunk: true,
|
||
|
isInitial: chunk.isOnlyInitial(),
|
||
|
isModuleAsset: false,
|
||
|
name,
|
||
|
path
|
||
|
});
|
||
|
}, files);
|
||
|
};
|
||
|
exports.reduceChunk = reduceChunk;
|
||
|
const standardizeFilePaths = (file) => {
|
||
|
const result = Object.assign({}, file);
|
||
|
result.name = file.name.replace(/\\/g, '/');
|
||
|
result.path = file.path.replace(/\\/g, '/');
|
||
|
return result;
|
||
|
};
|
||
|
const transformFiles = (files, options) => ['filter', 'map', 'sort']
|
||
|
.filter((fname) => !!options[fname])
|
||
|
.reduce((prev, fname) => prev[fname](options[fname]), files)
|
||
|
.map(standardizeFilePaths);
|
||
|
exports.transformFiles = transformFiles;
|
||
|
//# sourceMappingURL=helpers.js.map
|