mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-06-21 09:40:44 +00:00
fix webpack: always copy over static contents (#360)
The problem with the file check, was it only checked if a file was missing and not if it changed. ## Please complete the following: - [x] I have added screenshots for all UI updates - [x] I confirm I have thoroughly tested these changes and take full responsibility for any bugs introduced - [x] I understand that submitting code with bugs that could have been caught through manual testing blocks releases and new features for all contributors ## Please put your Discord username so you can be contacted if a bug or regression is found: evan
This commit is contained in:
+10
-77
@@ -1,6 +1,5 @@
|
||||
import path from "path";
|
||||
import { fileURLToPath } from "url";
|
||||
import fs from "fs/promises";
|
||||
import HtmlWebpackPlugin from "html-webpack-plugin";
|
||||
import webpack from "webpack";
|
||||
import CopyPlugin from "copy-webpack-plugin";
|
||||
@@ -8,40 +7,6 @@ import CopyPlugin from "copy-webpack-plugin";
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
|
||||
async function checkResourcesCopied(sourceDir, targetDir) {
|
||||
async function checkDir(source, target) {
|
||||
let items;
|
||||
try {
|
||||
items = await fs.readdir(source, { withFileTypes: true });
|
||||
} catch (error) {
|
||||
console.error(`Error reading directory ${source}:`, error);
|
||||
return false;
|
||||
}
|
||||
for (const item of items) {
|
||||
const sourcePath = path.join(source, item.name);
|
||||
const targetPath = path.join(target, item.name);
|
||||
if (item.isDirectory()) {
|
||||
try {
|
||||
await fs.access(targetPath);
|
||||
} catch (error) {
|
||||
// Target directory does not exist.
|
||||
return false;
|
||||
}
|
||||
const exists = await checkDir(sourcePath, targetPath);
|
||||
if (!exists) return false;
|
||||
} else if (item.isFile()) {
|
||||
try {
|
||||
await fs.access(targetPath);
|
||||
} catch (error) {
|
||||
// Target file does not exist.
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return checkDir(sourceDir, targetDir);
|
||||
}
|
||||
export default async (env, argv) => {
|
||||
const isProduction = argv.mode === "production";
|
||||
|
||||
@@ -154,48 +119,16 @@ export default async (env, argv) => {
|
||||
new webpack.DefinePlugin({
|
||||
"process.env.GAME_ENV": JSON.stringify(isProduction ? "prod" : "dev"),
|
||||
}),
|
||||
...(await (async () => {
|
||||
if (isProduction) {
|
||||
return [
|
||||
new CopyPlugin({
|
||||
patterns: [
|
||||
{
|
||||
from: "resources",
|
||||
to: ".",
|
||||
noErrorOnMissing: true,
|
||||
},
|
||||
],
|
||||
options: { concurrency: 100 },
|
||||
}),
|
||||
];
|
||||
} else {
|
||||
const resourcesDir = path.resolve(__dirname, "resources");
|
||||
const targetDir = path.resolve(__dirname, "static");
|
||||
const allExist = await checkResourcesCopied(resourcesDir, targetDir);
|
||||
if (allExist) {
|
||||
console.log(
|
||||
"[CopyPlugin] Skipped: All resources already exist in static/.",
|
||||
);
|
||||
return []; // Skip CopyPlugin if all resources are present.
|
||||
} else {
|
||||
console.log(
|
||||
"[CopyPlugin] Copying missing resources to static/ ...",
|
||||
);
|
||||
return [
|
||||
new CopyPlugin({
|
||||
patterns: [
|
||||
{
|
||||
from: "resources",
|
||||
to: ".",
|
||||
noErrorOnMissing: true,
|
||||
},
|
||||
],
|
||||
options: { concurrency: 100 },
|
||||
}),
|
||||
];
|
||||
}
|
||||
}
|
||||
})()),
|
||||
new CopyPlugin({
|
||||
patterns: [
|
||||
{
|
||||
from: path.resolve(__dirname, "resources"),
|
||||
to: path.resolve(__dirname, "static"),
|
||||
noErrorOnMissing: true,
|
||||
},
|
||||
],
|
||||
options: { concurrency: 100 },
|
||||
}),
|
||||
],
|
||||
optimization: {
|
||||
// Add optimization configuration for better caching
|
||||
|
||||
Reference in New Issue
Block a user