/**
* 构建时展开 HTML 中的 (path 相对 client/src)。
* 由 webpack CopyWebpackPlugin 的 transform 调用;源 HTML 仅保留占位符,不写入展开结果。
*/
const fs = require('fs');
const path = require('path');
/** 含行首空白,避免占位行缩进与 partial 首行缩进叠加 */
const INCLUDE_RE = /[ \t]*/g;
/**
* @param {string} html
* @param {string} srcRoot 绝对路径,一般为 client/src
* @returns {string}
*/
function expandHtmlIncludes(html, srcRoot) {
return html.replace(INCLUDE_RE, (_match, relPath) => {
const full = path.resolve(srcRoot, relPath);
if (!fs.existsSync(full)) {
throw new Error(`includeHtmlPartials: missing file ${full} (INCLUDE ${relPath})`);
}
return fs.readFileSync(full, 'utf8');
});
}
module.exports = { expandHtmlIncludes };