Skip to content

Commit 785bcda

Browse files
LeoMcAakatsoulas
authored andcommitted
handle assets in pre-rendering
1 parent b05b8eb commit 785bcda

2 files changed

Lines changed: 34 additions & 16 deletions

File tree

webpack.pre-render.js

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,19 @@
1+
const { mergeWithRules } = require("webpack-merge");
12
const path = require("path");
23
const sveltePreprocess = require("svelte-preprocess");
34
const SveltePreRenderPlugin = require("./webpack/svelte-pre-render-plugin");
45

5-
module.exports = {
6+
const common = require("./webpack.common.js");
7+
8+
module.exports = mergeWithRules({
9+
module: {
10+
rules: {
11+
test: "match",
12+
type: "replace",
13+
use: "replace",
14+
},
15+
},
16+
})(common, {
617
entry: {
718
contribute: "./svelte/contribute/Contribute",
819
},
@@ -13,17 +24,10 @@ module.exports = {
1324
"/contribute/forum",
1425
"/contribute/kb",
1526
"/contribute/social",
16-
]
17-
})
27+
],
28+
}),
1829
],
1930
mode: "production",
20-
resolve: {
21-
alias: {
22-
svelte: path.resolve("node_modules", "svelte"),
23-
},
24-
extensions: [".mjs", ".js", ".svelte"],
25-
mainFields: ["svelte", "browser", "module", "main"],
26-
},
2731
module: {
2832
rules: [
2933
{
@@ -41,15 +45,14 @@ module.exports = {
4145
},
4246
},
4347
{
44-
// required to prevent errors from Svelte on Webpack 5+, omit on Webpack 4
45-
test: /node_modules\/svelte\/.*\.mjs$/,
46-
resolve: {
47-
fullySpecified: false,
48+
test: /\.(svg|png|gif|woff2?)$/,
49+
type: "asset/source",
50+
use: {
51+
loader: path.resolve("./webpack/ssr-asset-loader"),
4852
},
4953
},
5054
],
5155
},
52-
devtool: "cheap-module-source-map",
5356
output: {
5457
filename: "[name].js",
5558
path: path.resolve(__dirname, "dist/pre-render"),
@@ -58,4 +61,4 @@ module.exports = {
5861
},
5962
},
6063
target: "node",
61-
};
64+
});

webpack/ssr-asset-loader.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
const fs = require("fs");
2+
const path = require("path");
3+
4+
module.exports = function (source) {
5+
const assetMap = JSON.parse(
6+
fs.readFileSync(
7+
path.join(__dirname, "../dist/source-to-asset.json"),
8+
"utf-8"
9+
)
10+
);
11+
return (
12+
"{{ STATIC_URL_WEBPACK }}/" +
13+
assetMap[this.resourcePath.replace(path.join(__dirname, "../"), "")] || ""
14+
);
15+
};

0 commit comments

Comments
 (0)