UNPKG

2.03 kBJavaScriptView Raw
1const injectHtmlLang = require('./inject/htmlLang')
2const injectMetas = require('./inject/metas')
3const injectStyles = require('./inject/styles')
4const injectScripts = require('./inject/scripts')
5
6/**
7 * 生成 ejs 使用的模板替换对象
8 * @param {Object} options 当前设置
9 * @param {Object} [options.injectCache={}] 静态注入对象/当前语言的静态注入缓存对象
10 * @param {Object} [options.filemap={}] (当前语言的) 文件名对应表
11 * @param {Object} [options.entrypoints={}] (当前语言的) 入口表
12 * @param {String} [localeId] 当前语种 ID
13 * @param {String} [title] 页面标题
14 * @param {String} [metaHtml] meta 标签 HTML 代码
15 * @param {String} [reactHtml] 已处理完毕的 React 同构结果 HTML 代码
16 * @param {String} [stylesHtml] 已处理完毕的样式结果 HTML 代码
17 * @param {String} [reduxHtml] 已处理完毕的 redux store 结果 HTML 代码
18 * @param {Object} [needInjectCritical] 是否需要自动注入 critical 内容
19 * @param {Boolean} [needInjectCritical.styles=false]
20 * @param {Boolean} [needInjectCritical.scripts=false]
21 * @returns {Object}
22 */
23module.exports = (options = {}) => {
24 const {
25 injectCache = {},
26
27 filemap = {},
28 entrypoints = {},
29 compilation,
30
31 localeId,
32
33 title,
34 metaHtml,
35 reactHtml,
36 stylesHtml,
37 reduxHtml,
38
39 needInjectCritical = {
40 styles: false,
41 scripts: false,
42 },
43 } = options
44
45 return {
46
47 htmlLang: injectHtmlLang(localeId),
48 title,
49 metas: injectMetas(metaHtml),
50 styles: injectStyles({
51 needInjectCritical: needInjectCritical.styles,
52 injectCache,
53 filemap,
54 stylesHtml,
55 localeId,
56 compilation,
57 }),
58
59 react: reactHtml,
60
61 scripts: injectScripts(needInjectCritical.scripts, injectCache, entrypoints, reduxHtml),
62
63 }
64}