@lusito/require-libs
Version:
Some libraries to setup require hooks
26 lines (25 loc) • 1.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createCopyAsset = createCopyAsset;
const fs_1 = require("fs");
const crypto_1 = require("crypto");
const path_1 = require("path");
function createCopyAsset(assetDir, prefix) {
const assetCache = {};
(0, fs_1.mkdirSync)(assetDir, { recursive: true });
return function copyAsset(filename) {
let destination = assetCache[filename];
if (!destination) {
const fileBuffer = (0, fs_1.readFileSync)(filename);
const hashSum = (0, crypto_1.createHash)("sha256");
hashSum.update(fileBuffer);
const hash = hashSum.digest("hex").substring(0, 8);
const ext = (0, path_1.extname)(filename);
const newFilename = `${(0, path_1.basename)(filename, ext)}-${hash}${ext}`;
destination = prefix + newFilename;
assetCache[filename] = destination;
(0, fs_1.copyFileSync)(filename, (0, path_1.resolve)(assetDir, newFilename));
}
return destination;
};
}