import fs from 'fs'; import path from 'path'; import nconf from 'nconf'; const MANIFEST_FILE_PATH = path.join(__dirname, '/../../client-old/manifest.json'); const BUILD_FOLDER_PATH = path.join(__dirname, '/../../build'); const manifestFiles = require(MANIFEST_FILE_PATH); // eslint-disable-line import/no-dynamic-require const IS_PROD = nconf.get('IS_PROD'); const buildFiles = []; function _walk (folder) { const files = fs.readdirSync(folder); files.forEach(fileName => { const file = `${folder}/${fileName}`; if (fs.statSync(file).isDirectory()) { _walk(file); } else { const relFolder = path.relative(BUILD_FOLDER_PATH, folder); let original = fileName.replace(/-.{8}(\.[\d\w]+)$/, '$1'); // Match the hash part of the filename if (relFolder) { original = `${relFolder}/${original}`; fileName = `${relFolder}/${fileName}`; // eslint-disable-line no-param-reassign } buildFiles[original] = fileName; } }); } // Walks through all the files in the build directory // and creates a map of original files names and hashed files names _walk(BUILD_FOLDER_PATH); export function getBuildUrl (url) { return `/${buildFiles[url] || url}`; } export function getManifestFiles (page, type) { const files = manifestFiles[page]; if (!files) throw new Error(`Page "${page}" not found!`); let htmlCode = ''; if (IS_PROD) { if (type !== 'js') { htmlCode += ``; // eslint-disable-line prefer-template } if (type !== 'css') { htmlCode += ``; // eslint-disable-line prefer-template } } else { if (type !== 'js') { files.css.forEach(file => { htmlCode += ``; }); } if (type !== 'css') { files.js.forEach(file => { htmlCode += ``; }); } } return htmlCode; }