diff --git a/.eslintrc b/.eslintrc index 69c945431e..a3bc6debda 100644 --- a/.eslintrc +++ b/.eslintrc @@ -28,7 +28,6 @@ "no-new": 2, "no-octal-escape": 2, "no-octal": 2, - "no-param-reassign": 2, "no-process-env": 2, "no-proto": 2, "no-implied-eval": 2, diff --git a/website/src/libs/buildManifest.js b/website/src/libs/api-v2/buildManifest.js similarity index 91% rename from website/src/libs/buildManifest.js rename to website/src/libs/api-v2/buildManifest.js index e2b337860f..458bd8ac1e 100644 --- a/website/src/libs/buildManifest.js +++ b/website/src/libs/api-v2/buildManifest.js @@ -2,7 +2,7 @@ var fs = require('fs'); var path = require('path'); var nconf = require('nconf'); var _ = require('lodash'); -var manifestFiles = require("../../public/manifest.json"); +var manifestFiles = require("../../../public/manifest.json"); var IS_PROD = nconf.get('NODE_ENV') === 'production'; var buildFiles = []; @@ -15,7 +15,7 @@ var walk = function(folder){ if(fs.statSync(file).isDirectory()){ walk(file); }else{ - var relFolder = path.relative(path.join(__dirname, "/../../build"), folder); + var relFolder = path.relative(path.join(__dirname, "/../../../build"), folder); var old = fileName.replace(/-.{8}(\.[\d\w]+)$/, '$1'); if(relFolder){ @@ -28,7 +28,7 @@ var walk = function(folder){ }); }; -walk(path.join(__dirname, "/../../build")); +walk(path.join(__dirname, "/../../../build")); var getBuildUrl = module.exports.getBuildUrl = function(url){ if(buildFiles[url]) return '/' + buildFiles[url]; diff --git a/website/src/libs/api-v3/buildManifest.js b/website/src/libs/api-v3/buildManifest.js new file mode 100644 index 0000000000..94d6d49a2d --- /dev/null +++ b/website/src/libs/api-v3/buildManifest.js @@ -0,0 +1,62 @@ +import fs from 'fs'; +import path from 'path'; +import nconf from 'nconf'; + +const MANIFEST_FILE_PATH = path.join(__dirname, '/../../../public/manifest.json'); +const BUILD_FOLDER_PATH = path.join(__dirname, '/../../../build'); +let manifestFiles = require(MANIFEST_FILE_PATH); + +const IS_PROD = nconf.get('IS_PROD'); +let buildFiles = []; + +function _walk (folder) { + let files = fs.readdirSync(folder); + + files.forEach((fileName) => { + let file = `${folder}/${fileName}`; + + if (fs.statSync(file).isDirectory()) { + _walk(file); + } else { + let 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}`; + } + + 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) { + let files = manifestFiles[page]; + + if (!files) throw new Error(`Page "${page}" not found!`); + + let htmlCode = ''; + + if (IS_PROD) { + htmlCode += ``; // eslint-disable-line prefer-template + htmlCode += ``; // eslint-disable-line prefer-template + } else { + files.css.forEach((file) => { + htmlCode += ``; + }); + files.js.forEach((file) => { + htmlCode += ``; + }); + } + + return htmlCode; +} \ No newline at end of file diff --git a/website/src/middlewares/locals.js b/website/src/middlewares/locals.js index e6b2fa8818..7bec7cc399 100644 --- a/website/src/middlewares/locals.js +++ b/website/src/middlewares/locals.js @@ -3,7 +3,7 @@ var _ = require('lodash'); var utils = require('../libs/utils'); var shared = require('../../../common'); var i18n = require('../libs/api-v2/i18n'); -var buildManifest = require('../libs/buildManifest'); +var buildManifest = require('../libs/api-v2/buildManifest'); var shared = require('../../../common'); var forceRefresh = require('./forceRefresh'); var tavernQuest = require('../models/group').tavernQuest;