UNPKG

html-render-webpack-plugin

Version:

webpack plugin for rendering static HTML in a multi-config webpack build

45 lines 2.28 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; const path_1 = __importDefault(require("path")); const eval_1 = __importDefault(require("eval")); const logging_1 = require("./logging"); function getFromSourceModules(specifier, fsModule, rootDir) { const sourceModuleSpecifier = specifier.replace(/^\.\//, ""); if (!fsModule.existsSync(path_1.default.resolve(rootDir, sourceModuleSpecifier))) { logging_1.log(`Unable to find file specifier ${sourceModuleSpecifier}. Root: ${rootDir}.`); return undefined; } return fsModule.readFileSync(path_1.default.resolve(rootDir, sourceModuleSpecifier)); } function evaluateFromFileSystem(specifier, fsModule, rootDir, extraGlobals) { logging_1.log(`Evaluating source for ${specifier}". From root directory: "${rootDir}".`); let source; try { source = getFromSourceModules(specifier, fsModule, rootDir); } catch (error) { throw new Error(`An error reading "${specifier}". Error: ${error}`); } return eval_1.default(source, /* filename: */ specifier, Object.assign(Object.assign({ console, process }, (extraGlobals || {})), { require: createLinker(specifier, fsModule, rootDir, extraGlobals) }), /* includeGlobals: */ true); } function createLinker(parentModulePath, fsModule, rootDir, extraGlobals) { logging_1.log("Creating linker for", parentModulePath); return function linker(specifier) { const absPath = path_1.default.join(path_1.default.dirname(parentModulePath), specifier); if (!getFromSourceModules(specifier, fsModule, rootDir)) { logging_1.log(`Using external require for ${specifier} from ${parentModulePath}`); const resolvedPath = require.resolve(specifier, { paths: [rootDir] }); logging_1.log(`Resolved ${specifier} as external package to ${resolvedPath}`); return require(resolvedPath); } logging_1.log(`Linking ${parentModulePath} to asset ${specifier}`); return evaluateFromFileSystem(absPath, fsModule, rootDir, extraGlobals); }; } module.exports = evaluateFromFileSystem; //# sourceMappingURL=evaluateFromFileSystem.js.map