@modern-js/app-tools 2.30.0 → 2.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +51 -0
- package/dist/cjs/analyze/getHtmlTemplate.js +6 -0
- package/dist/cjs/builder/shared/builderPlugins/adapterSSR.js +13 -3
- package/dist/cjs/builder/shared/bundlerPlugins/RouterPlugin.js +64 -82
- package/dist/cjs/config/default.js +2 -1
- package/dist/cjs/schema/index.js +3 -0
- package/dist/cjs/types/config/testing.js +4 -0
- package/dist/cjs/types/legacyConfig/testing.js +4 -0
- package/dist/esm/analyze/getHtmlTemplate.js +8 -1
- package/dist/esm/builder/shared/builderPlugins/adapterSSR.js +13 -3
- package/dist/esm/builder/shared/bundlerPlugins/RouterPlugin.js +189 -249
- package/dist/esm/config/default.js +2 -1
- package/dist/esm/schema/index.js +3 -0
- package/dist/esm/types/config/testing.js +1 -0
- package/dist/esm/types/legacyConfig/testing.js +1 -0
- package/dist/esm-node/analyze/getHtmlTemplate.js +6 -0
- package/dist/esm-node/builder/shared/builderPlugins/adapterSSR.js +13 -3
- package/dist/esm-node/builder/shared/bundlerPlugins/RouterPlugin.js +68 -85
- package/dist/esm-node/config/default.js +2 -1
- package/dist/esm-node/schema/index.js +3 -0
- package/dist/esm-node/types/config/testing.js +1 -0
- package/dist/esm-node/types/legacyConfig/testing.js +1 -0
- package/dist/types/builder/shared/bundlerPlugins/RouterPlugin.d.ts +24 -0
- package/dist/types/types/config/index.d.ts +4 -1
- package/dist/types/types/config/output.d.ts +1 -0
- package/dist/types/types/config/security.d.ts +3 -1
- package/dist/types/types/config/testing.d.ts +8 -0
- package/dist/types/types/config/tools.d.ts +1 -1
- package/dist/types/types/legacyConfig/index.d.ts +2 -0
- package/dist/types/types/legacyConfig/testing.d.ts +8 -0
- package/dist/types/types/legacyConfig/tools.d.ts +1 -2
- package/package.json +25 -25
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,56 @@
|
|
|
1
1
|
# @modern-js/app-tools
|
|
2
2
|
|
|
3
|
+
## 2.31.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 71bcc55: fix: inline the route manifests into the html
|
|
8
|
+
fix: 内联路由信息到 html 中
|
|
9
|
+
- 2361ce8: feat: support partials html in Document
|
|
10
|
+
feat: 支持 partials html 在 Document 中也生效
|
|
11
|
+
- 30be1ad: fix(app-tools): inject nonce attr to route manifest script
|
|
12
|
+
|
|
13
|
+
fix(app-tools): 向 route manifest 脚本注入 nonce 属性
|
|
14
|
+
|
|
15
|
+
- 4c03d9a: fix(core): remove testing config type and schema
|
|
16
|
+
|
|
17
|
+
fix(core): 移除 testing 配置类型和 schema
|
|
18
|
+
|
|
19
|
+
- 1882366: chore(deps): bump build dependencies
|
|
20
|
+
|
|
21
|
+
chore(deps): 升级构建相关依赖
|
|
22
|
+
|
|
23
|
+
- Updated dependencies [0f09d7c]
|
|
24
|
+
- Updated dependencies [bfdf7b4]
|
|
25
|
+
- Updated dependencies [56eaa0b]
|
|
26
|
+
- Updated dependencies [2361ce8]
|
|
27
|
+
- Updated dependencies [8ab3e2a]
|
|
28
|
+
- Updated dependencies [4c03d9a]
|
|
29
|
+
- Updated dependencies [1eece3e]
|
|
30
|
+
- Updated dependencies [fa8e948]
|
|
31
|
+
- Updated dependencies [83bf560]
|
|
32
|
+
- Updated dependencies [d9cc4d8]
|
|
33
|
+
- Updated dependencies [1882366]
|
|
34
|
+
- @modern-js/builder-rspack-provider@2.31.0
|
|
35
|
+
- @modern-js/builder-webpack-provider@2.31.0
|
|
36
|
+
- @modern-js/builder-shared@2.31.0
|
|
37
|
+
- @modern-js/prod-server@2.31.0
|
|
38
|
+
- @modern-js/core@2.31.0
|
|
39
|
+
- @modern-js/builder@2.31.0
|
|
40
|
+
- @modern-js/utils@2.31.0
|
|
41
|
+
- @modern-js/builder-plugin-node-polyfill@2.31.0
|
|
42
|
+
- @modern-js/builder-plugin-esbuild@2.31.0
|
|
43
|
+
- @modern-js/server@2.31.0
|
|
44
|
+
- @modern-js/plugin-data-loader@2.31.0
|
|
45
|
+
- @modern-js/plugin-lint@2.31.0
|
|
46
|
+
- @modern-js/plugin-i18n@2.31.0
|
|
47
|
+
- @modern-js/new-action@2.31.0
|
|
48
|
+
- @modern-js/server-core@2.31.0
|
|
49
|
+
- @modern-js/node-bundle-require@2.31.0
|
|
50
|
+
- @modern-js/plugin@2.31.0
|
|
51
|
+
- @modern-js/upgrade@2.31.0
|
|
52
|
+
- @modern-js/types@2.31.0
|
|
53
|
+
|
|
3
54
|
## 2.30.0
|
|
4
55
|
|
|
5
56
|
### Patch Changes
|
|
@@ -38,6 +38,7 @@ const getHtmlTemplate = async (entrypoints, api, { appContext, config }) => {
|
|
|
38
38
|
const { source: { configDir } } = config;
|
|
39
39
|
const htmlDir = _path.default.resolve(appDirectory, configDir || "", _constants.HTML_PARTIALS_FOLDER);
|
|
40
40
|
const htmlTemplates = {};
|
|
41
|
+
const partialsByEntrypoint = {};
|
|
41
42
|
for (const entrypoint of entrypoints) {
|
|
42
43
|
const { entryName, isMainEntry } = entrypoint;
|
|
43
44
|
const name = entrypoints.length === 1 && isMainEntry ? "" : entryName;
|
|
@@ -67,11 +68,16 @@ const getHtmlTemplate = async (entrypoints, api, { appContext, config }) => {
|
|
|
67
68
|
const templatePath = _path.default.resolve(internalDirectory, entryName, "index.html");
|
|
68
69
|
_utils.fs.outputFileSync(templatePath, _templates.html(partials), "utf8");
|
|
69
70
|
htmlTemplates[entryName] = templatePath;
|
|
71
|
+
partialsByEntrypoint[entryName] = partials;
|
|
70
72
|
const bottomTemplate = findPartials(htmlDir, name, PartialPosition.BOTTOM);
|
|
71
73
|
if (bottomTemplate) {
|
|
72
74
|
htmlTemplates[`__${entryName}-bottom__`] = bottomTemplate.content;
|
|
73
75
|
}
|
|
74
76
|
}
|
|
75
77
|
}
|
|
78
|
+
api.setAppContext({
|
|
79
|
+
...api.useAppContext(),
|
|
80
|
+
partialsByEntrypoint
|
|
81
|
+
});
|
|
76
82
|
return htmlTemplates;
|
|
77
83
|
};
|
|
@@ -31,7 +31,7 @@ const builderPluginAdapterSSR = (options) => ({
|
|
|
31
31
|
api.modifyBundlerChain(async (chain, { target, CHAIN_ID, isProd, HtmlPlugin: HtmlBundlerPlugin, isServer }) => {
|
|
32
32
|
const builderConfig = api.getNormalizedConfig();
|
|
33
33
|
const { normalizedConfig: normalizedConfig2 } = options;
|
|
34
|
-
applyRouterPlugin(chain, options);
|
|
34
|
+
applyRouterPlugin(chain, options, HtmlBundlerPlugin);
|
|
35
35
|
if ((0, _utils.isSSR)(normalizedConfig2)) {
|
|
36
36
|
await applySSRLoaderEntry(chain, options, isServer);
|
|
37
37
|
applySSRDataLoader(chain, options);
|
|
@@ -80,7 +80,7 @@ function applyAsyncChunkHtmlPlugin({ chain, modernConfig, CHAIN_ID, HtmlBundlerP
|
|
|
80
80
|
]);
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
|
-
function applyRouterPlugin(chain, options) {
|
|
83
|
+
function applyRouterPlugin(chain, options, HtmlBundlerPlugin) {
|
|
84
84
|
var _normalizedConfig_runtime, _normalizedConfig, _routerConfig, _normalizedConfig_deploy_worker;
|
|
85
85
|
const { appContext, normalizedConfig } = options;
|
|
86
86
|
const { entrypoints } = appContext;
|
|
@@ -89,7 +89,17 @@ function applyRouterPlugin(chain, options) {
|
|
|
89
89
|
const routerManifest = Boolean((_routerConfig = routerConfig) === null || _routerConfig === void 0 ? void 0 : _routerConfig.manifest);
|
|
90
90
|
const workerSSR = Boolean((_normalizedConfig_deploy_worker = normalizedConfig.deploy.worker) === null || _normalizedConfig_deploy_worker === void 0 ? void 0 : _normalizedConfig_deploy_worker.ssr);
|
|
91
91
|
if (existNestedRoutes || routerManifest || workerSSR) {
|
|
92
|
-
|
|
92
|
+
var _normalizedConfig_output_distPath, _normalizedConfig_output, _normalizedConfig_output1, _normalizedConfig_html, _normalizedConfig_security;
|
|
93
|
+
chain.plugin("route-plugin").use(_bundlerPlugins.RouterPlugin, [
|
|
94
|
+
{
|
|
95
|
+
HtmlBundlerPlugin,
|
|
96
|
+
enableInlineRouteManifests: normalizedConfig.output.enableInlineRouteManifests,
|
|
97
|
+
staticJsDir: (_normalizedConfig_output = normalizedConfig.output) === null || _normalizedConfig_output === void 0 ? void 0 : (_normalizedConfig_output_distPath = _normalizedConfig_output.distPath) === null || _normalizedConfig_output_distPath === void 0 ? void 0 : _normalizedConfig_output_distPath.js,
|
|
98
|
+
disableFilenameHash: (_normalizedConfig_output1 = normalizedConfig.output) === null || _normalizedConfig_output1 === void 0 ? void 0 : _normalizedConfig_output1.disableFilenameHash,
|
|
99
|
+
scriptLoading: (_normalizedConfig_html = normalizedConfig.html) === null || _normalizedConfig_html === void 0 ? void 0 : _normalizedConfig_html.scriptLoading,
|
|
100
|
+
nonce: (_normalizedConfig_security = normalizedConfig.security) === null || _normalizedConfig_security === void 0 ? void 0 : _normalizedConfig_security.nonce
|
|
101
|
+
}
|
|
102
|
+
]);
|
|
93
103
|
}
|
|
94
104
|
}
|
|
95
105
|
function applyFilterEntriesBySSRConfig({ isProd, chain, appNormalizedConfig }) {
|
|
@@ -8,13 +8,15 @@ Object.defineProperty(exports, "RouterPlugin", {
|
|
|
8
8
|
return RouterPlugin;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const
|
|
12
|
-
const
|
|
11
|
+
const _define_property = require("@swc/helpers/_/_define_property");
|
|
12
|
+
const _crypto = require("crypto");
|
|
13
13
|
const _lodash = require("@modern-js/utils/lodash");
|
|
14
14
|
const _utils = require("@modern-js/utils");
|
|
15
15
|
const _constants = require("@modern-js/utils/universal/constants");
|
|
16
|
-
const _esbuild = require("esbuild");
|
|
17
16
|
const PLUGIN_NAME = "ModernjsRoutePlugin";
|
|
17
|
+
const generateContentHash = (content) => {
|
|
18
|
+
return (0, _crypto.createHash)("md5").update(content).digest("hex").slice(0, 8);
|
|
19
|
+
};
|
|
18
20
|
class RouterPlugin {
|
|
19
21
|
isTargetNodeOrWebWorker(target) {
|
|
20
22
|
if (target === "node" || Array.isArray(target) && target.includes("node")) {
|
|
@@ -48,76 +50,23 @@ class RouterPlugin {
|
|
|
48
50
|
}
|
|
49
51
|
const { webpack } = compiler;
|
|
50
52
|
const { Compilation, sources } = webpack;
|
|
51
|
-
const { RawSource
|
|
53
|
+
const { RawSource } = sources;
|
|
52
54
|
const normalizePath = (path) => {
|
|
53
55
|
if (!path.endsWith("/")) {
|
|
54
56
|
return `${path}/`;
|
|
55
57
|
}
|
|
56
58
|
return path;
|
|
57
59
|
};
|
|
58
|
-
const
|
|
59
|
-
const
|
|
60
|
-
const
|
|
60
|
+
const chunksToHtmlName = /* @__PURE__ */ new Map();
|
|
61
|
+
const ROUTE_MANIFEST_HOLDER = `route-manifest`;
|
|
62
|
+
const placeholder = `<!--<?- ${ROUTE_MANIFEST_HOLDER} ?>-->`;
|
|
61
63
|
compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
|
|
62
|
-
compilation.
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
chunkGroups: true,
|
|
69
|
-
chunks: true,
|
|
70
|
-
ids: true
|
|
71
|
-
});
|
|
72
|
-
const { chunks = [], namedChunkGroups } = stats;
|
|
73
|
-
if (!namedChunkGroups) {
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
const entryChunks = this.getEntryChunks(compilation, chunks);
|
|
77
|
-
const entryChunkFiles = entryChunks.map((chunk) => [
|
|
78
|
-
...chunk.files || []
|
|
79
|
-
].find((fname) => fname.includes(".js")));
|
|
80
|
-
const entryChunkFileIds = entryChunks.map((chunk) => chunk.id);
|
|
81
|
-
for (let i = 0; i <= entryChunkFiles.length - 1; i++) {
|
|
82
|
-
const file = entryChunkFiles[i];
|
|
83
|
-
const chunkId = entryChunkFileIds[i];
|
|
84
|
-
const asset = compilation.assets[file];
|
|
85
|
-
if (!asset) {
|
|
86
|
-
continue;
|
|
87
|
-
}
|
|
88
|
-
const { map } = asset.sourceAndMap();
|
|
89
|
-
chunkToMap.set(chunkId, map);
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
compilation.hooks.processAssets.tapPromise({
|
|
93
|
-
name: PLUGIN_NAME,
|
|
94
|
-
stage: Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_TRANSFER
|
|
95
|
-
}, async () => {
|
|
96
|
-
const stats = compilation.getStats().toJson({
|
|
97
|
-
all: false,
|
|
98
|
-
chunkGroups: true,
|
|
99
|
-
chunks: true,
|
|
100
|
-
ids: true
|
|
101
|
-
});
|
|
102
|
-
const { chunks = [], namedChunkGroups } = stats;
|
|
103
|
-
if (!namedChunkGroups) {
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
const entryChunks = this.getEntryChunks(compilation, chunks);
|
|
107
|
-
const entryChunkFiles = entryChunks.map((chunk) => [
|
|
108
|
-
...chunk.files || []
|
|
109
|
-
].find((fname) => fname.includes(".js")));
|
|
110
|
-
const entryChunkFileIds = entryChunks.map((chunk) => chunk.id);
|
|
111
|
-
for (let i = 0; i <= entryChunkFiles.length - 1; i++) {
|
|
112
|
-
const file = entryChunkFiles[i];
|
|
113
|
-
const chunkId = entryChunkFileIds[i];
|
|
114
|
-
const asset = compilation.assets[file];
|
|
115
|
-
if (!asset) {
|
|
116
|
-
continue;
|
|
117
|
-
}
|
|
118
|
-
const { source } = asset.sourceAndMap();
|
|
119
|
-
chunkToSource.set(chunkId, source);
|
|
120
|
-
}
|
|
64
|
+
this.HtmlBundlerPlugin.getHooks(compilation).beforeEmit.tapAsync("RouterManifestPlugin", (data, callback) => {
|
|
65
|
+
const { outputName } = data;
|
|
66
|
+
const { chunks } = data.plugin.options;
|
|
67
|
+
chunksToHtmlName.set(chunks, outputName);
|
|
68
|
+
data.html = data.html.replace("</script>", `</script>${placeholder}`);
|
|
69
|
+
callback(null, data);
|
|
121
70
|
});
|
|
122
71
|
compilation.hooks.processAssets.tapPromise({
|
|
123
72
|
name: PLUGIN_NAME,
|
|
@@ -164,11 +113,12 @@ class RouterPlugin {
|
|
|
164
113
|
const manifest = {
|
|
165
114
|
routeAssets
|
|
166
115
|
};
|
|
116
|
+
const entryNames = Array.from(compilation.entrypoints.keys());
|
|
167
117
|
const entryChunks = this.getEntryChunks(compilation, chunks);
|
|
168
118
|
const entryChunkFiles = this.getEntryChunkFiles(entryChunks);
|
|
169
119
|
const entryChunkFileIds = entryChunks.map((chunk) => chunk.id);
|
|
170
120
|
for (let i = 0; i < entryChunkFiles.length; i++) {
|
|
171
|
-
|
|
121
|
+
const entryName = entryNames[i];
|
|
172
122
|
const file = entryChunkFiles[i];
|
|
173
123
|
const chunkNames = entryChunks[i].names;
|
|
174
124
|
const chunkId = entryChunkFileIds[i];
|
|
@@ -204,21 +154,39 @@ class RouterPlugin {
|
|
|
204
154
|
})};
|
|
205
155
|
})();
|
|
206
156
|
`;
|
|
207
|
-
|
|
208
|
-
const
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
const
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
157
|
+
let htmlName;
|
|
158
|
+
for (const [chunks2, name] of chunksToHtmlName.entries()) {
|
|
159
|
+
if (Array.isArray(chunkNames) && Array.isArray(chunks2) && chunkNames.every((value, index) => value === chunks2[index])) {
|
|
160
|
+
htmlName = name;
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
const oldHtml = compilation.assets[htmlName];
|
|
165
|
+
const { enableInlineRouteManifests, disableFilenameHash, staticJsDir, scriptLoading, nonce } = this;
|
|
166
|
+
const nonceAttr = nonce ? `nonce="${nonce}"` : "";
|
|
167
|
+
if (enableInlineRouteManifests) {
|
|
168
|
+
compilation.updateAsset(
|
|
169
|
+
htmlName,
|
|
170
|
+
new RawSource(oldHtml.source().toString().replace(placeholder, `<script ${nonceAttr}>${injectedContent}</script>`)),
|
|
171
|
+
// FIXME: The arguments third of updatgeAsset is a optional function in webpack.
|
|
172
|
+
void 0
|
|
173
|
+
);
|
|
174
|
+
} else {
|
|
175
|
+
const scriptPath = `${staticJsDir}/${ROUTE_MANIFEST_HOLDER}-${entryName}${disableFilenameHash ? ".js" : `.${generateContentHash(injectedContent)}.js`}`;
|
|
176
|
+
const scriptUrl = `${publicPath}${scriptPath}`;
|
|
177
|
+
const scriptLoadingAttr = (
|
|
178
|
+
// eslint-disable-next-line no-nested-ternary
|
|
179
|
+
scriptLoading === "defer" ? scriptLoading : scriptLoading === "module" ? `type="module"` : ""
|
|
180
|
+
);
|
|
181
|
+
const script = `<script ${scriptLoadingAttr} ${nonceAttr} src="${scriptUrl}"></script>`;
|
|
182
|
+
compilation.updateAsset(
|
|
183
|
+
htmlName,
|
|
184
|
+
new RawSource(oldHtml.source().toString().replace(placeholder, script)),
|
|
185
|
+
// FIXME: The arguments third of updatgeAsset is a optional function in webpack.
|
|
186
|
+
void 0
|
|
187
|
+
);
|
|
188
|
+
compilation.emitAsset(scriptPath, new RawSource(injectedContent));
|
|
189
|
+
}
|
|
222
190
|
}
|
|
223
191
|
if (prevManifestAsset) {
|
|
224
192
|
compilation.updateAsset(
|
|
@@ -233,4 +201,18 @@ class RouterPlugin {
|
|
|
233
201
|
});
|
|
234
202
|
});
|
|
235
203
|
}
|
|
204
|
+
constructor({ staticJsDir = "static/js", HtmlBundlerPlugin, enableInlineRouteManifests, disableFilenameHash = false, scriptLoading = "defer", nonce }) {
|
|
205
|
+
_define_property._(this, "HtmlBundlerPlugin", void 0);
|
|
206
|
+
_define_property._(this, "enableInlineRouteManifests", void 0);
|
|
207
|
+
_define_property._(this, "staticJsDir", void 0);
|
|
208
|
+
_define_property._(this, "disableFilenameHash", void 0);
|
|
209
|
+
_define_property._(this, "scriptLoading", void 0);
|
|
210
|
+
_define_property._(this, "nonce", void 0);
|
|
211
|
+
this.HtmlBundlerPlugin = HtmlBundlerPlugin;
|
|
212
|
+
this.enableInlineRouteManifests = enableInlineRouteManifests;
|
|
213
|
+
this.staticJsDir = staticJsDir;
|
|
214
|
+
this.disableFilenameHash = disableFilenameHash;
|
|
215
|
+
this.scriptLoading = scriptLoading;
|
|
216
|
+
this.nonce = nonce;
|
|
217
|
+
}
|
|
236
218
|
}
|
|
@@ -30,7 +30,8 @@ function createDefaultConfig(appContext, bundler) {
|
|
|
30
30
|
};
|
|
31
31
|
const output = {
|
|
32
32
|
...defaultBuilderConfig.output,
|
|
33
|
-
disableNodePolyfill: true
|
|
33
|
+
disableNodePolyfill: true,
|
|
34
|
+
enableInlineRouteManifests: true
|
|
34
35
|
};
|
|
35
36
|
const source = {
|
|
36
37
|
...defaultBuilderConfig.source,
|
package/dist/cjs/schema/index.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
|
|
2
|
+
import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
|
|
3
|
+
import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
|
|
2
4
|
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
|
|
3
5
|
import { _ as _ts_values } from "@swc/helpers/_/_ts_values";
|
|
4
6
|
import path from "path";
|
|
@@ -30,7 +32,7 @@ var findPartials = function(dir, entryName, position) {
|
|
|
30
32
|
};
|
|
31
33
|
export var getHtmlTemplate = function() {
|
|
32
34
|
var _ref = _async_to_generator(function(entrypoints, api, param) {
|
|
33
|
-
var appContext, config, appDirectory, internalDirectory, configDir, htmlDir, htmlTemplates, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _loop, _iterator, _step, err;
|
|
35
|
+
var appContext, config, appDirectory, internalDirectory, configDir, htmlDir, htmlTemplates, partialsByEntrypoint, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _loop, _iterator, _step, err;
|
|
34
36
|
return _ts_generator(this, function(_state) {
|
|
35
37
|
switch (_state.label) {
|
|
36
38
|
case 0:
|
|
@@ -39,6 +41,7 @@ export var getHtmlTemplate = function() {
|
|
|
39
41
|
configDir = config.source.configDir;
|
|
40
42
|
htmlDir = path.resolve(appDirectory, configDir || "", HTML_PARTIALS_FOLDER);
|
|
41
43
|
htmlTemplates = {};
|
|
44
|
+
partialsByEntrypoint = {};
|
|
42
45
|
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
|
|
43
46
|
_state.label = 1;
|
|
44
47
|
case 1:
|
|
@@ -95,6 +98,7 @@ export var getHtmlTemplate = function() {
|
|
|
95
98
|
templatePath = path.resolve(internalDirectory, entryName, "index.html");
|
|
96
99
|
fs.outputFileSync(templatePath, templates.html(partials), "utf8");
|
|
97
100
|
htmlTemplates[entryName] = templatePath;
|
|
101
|
+
partialsByEntrypoint[entryName] = partials;
|
|
98
102
|
bottomTemplate = findPartials(htmlDir, name, PartialPosition.BOTTOM);
|
|
99
103
|
if (bottomTemplate) {
|
|
100
104
|
htmlTemplates["__".concat(entryName, "-bottom__")] = bottomTemplate.content;
|
|
@@ -155,6 +159,9 @@ export var getHtmlTemplate = function() {
|
|
|
155
159
|
7
|
|
156
160
|
];
|
|
157
161
|
case 8:
|
|
162
|
+
api.setAppContext(_object_spread_props(_object_spread({}, api.useAppContext()), {
|
|
163
|
+
partialsByEntrypoint: partialsByEntrypoint
|
|
164
|
+
}));
|
|
158
165
|
return [
|
|
159
166
|
2,
|
|
160
167
|
htmlTemplates
|
|
@@ -29,7 +29,7 @@ export var builderPluginAdapterSSR = function(options) {
|
|
|
29
29
|
target = param.target, CHAIN_ID = param.CHAIN_ID, isProd = param.isProd, HtmlBundlerPlugin = param.HtmlPlugin, isServer = param.isServer;
|
|
30
30
|
builderConfig = api.getNormalizedConfig();
|
|
31
31
|
normalizedConfig2 = options.normalizedConfig;
|
|
32
|
-
applyRouterPlugin(chain, options);
|
|
32
|
+
applyRouterPlugin(chain, options, HtmlBundlerPlugin);
|
|
33
33
|
if (!isSSR(normalizedConfig2))
|
|
34
34
|
return [
|
|
35
35
|
3,
|
|
@@ -118,7 +118,7 @@ function applyAsyncChunkHtmlPlugin(param) {
|
|
|
118
118
|
]);
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
|
-
function applyRouterPlugin(chain, options) {
|
|
121
|
+
function applyRouterPlugin(chain, options, HtmlBundlerPlugin) {
|
|
122
122
|
var _normalizedConfig_runtime, _normalizedConfig, _routerConfig, _normalizedConfig_deploy_worker;
|
|
123
123
|
var appContext = options.appContext, normalizedConfig = options.normalizedConfig;
|
|
124
124
|
var entrypoints = appContext.entrypoints;
|
|
@@ -129,7 +129,17 @@ function applyRouterPlugin(chain, options) {
|
|
|
129
129
|
var routerManifest = Boolean((_routerConfig = routerConfig) === null || _routerConfig === void 0 ? void 0 : _routerConfig.manifest);
|
|
130
130
|
var workerSSR = Boolean((_normalizedConfig_deploy_worker = normalizedConfig.deploy.worker) === null || _normalizedConfig_deploy_worker === void 0 ? void 0 : _normalizedConfig_deploy_worker.ssr);
|
|
131
131
|
if (existNestedRoutes || routerManifest || workerSSR) {
|
|
132
|
-
|
|
132
|
+
var _normalizedConfig_output_distPath, _normalizedConfig_output, _normalizedConfig_output1, _normalizedConfig_html, _normalizedConfig_security;
|
|
133
|
+
chain.plugin("route-plugin").use(RouterPlugin, [
|
|
134
|
+
{
|
|
135
|
+
HtmlBundlerPlugin: HtmlBundlerPlugin,
|
|
136
|
+
enableInlineRouteManifests: normalizedConfig.output.enableInlineRouteManifests,
|
|
137
|
+
staticJsDir: (_normalizedConfig_output = normalizedConfig.output) === null || _normalizedConfig_output === void 0 ? void 0 : (_normalizedConfig_output_distPath = _normalizedConfig_output.distPath) === null || _normalizedConfig_output_distPath === void 0 ? void 0 : _normalizedConfig_output_distPath.js,
|
|
138
|
+
disableFilenameHash: (_normalizedConfig_output1 = normalizedConfig.output) === null || _normalizedConfig_output1 === void 0 ? void 0 : _normalizedConfig_output1.disableFilenameHash,
|
|
139
|
+
scriptLoading: (_normalizedConfig_html = normalizedConfig.html) === null || _normalizedConfig_html === void 0 ? void 0 : _normalizedConfig_html.scriptLoading,
|
|
140
|
+
nonce: (_normalizedConfig_security = normalizedConfig.security) === null || _normalizedConfig_security === void 0 ? void 0 : _normalizedConfig_security.nonce
|
|
141
|
+
}
|
|
142
|
+
]);
|
|
133
143
|
}
|
|
134
144
|
}
|
|
135
145
|
function applyFilterEntriesBySSRConfig(param) {
|