chore(frontend): update webpack config (remove realfavicon-gen)

This commit is contained in:
Sarah Vaupel 2024-09-17 01:27:20 +02:00
parent d773906343
commit 8f52c848e8

View File

@ -20,7 +20,6 @@ import TerserPlugin from 'terser-webpack-plugin';
import yaml from 'js-yaml';
import postcssPresetEnv from 'postcss-preset-env';
import RemovePlugin from 'remove-files-webpack-plugin';
import RealFaviconPlugin from 'real-favicon-webpack-plugin';
import crypto from 'crypto';
// import { version as webpackVersion } from 'webpack/package.json' assert { type: 'json' }; // version.split('.').slice(0, 2).join('.');
@ -31,21 +30,9 @@ const webpackVersion = webpackJson.version.split('.').slice(0, 2).join('.');
import packageJson from './package.json' assert { type: "json" };
const packageVersion = packageJson.version;
import faviconJson from './config/favicon.json' assert { type: 'json' };
async function webpackConfig() {
const wellKnownCacheDir = resolve('.cache/well-known');
const assetsDirectory = resolve('assets');
let faviconApiVersion = undefined;
if (!fs.existsSync(wellKnownCacheDir)) {
try {
const faviconApiChangelog = await axios.get('https://realfavicongenerator.net/api/versions');
faviconApiVersion = faviconApiChangelog.data.filter(vObj => vObj.relevance.automated_update).slice(-1)[0].version;
} catch(e) {
console.error(e);
}
}
return {
module: {
@ -142,6 +129,7 @@ async function webpackConfig() {
new webpack.DefinePlugin({
VERSION: JSON.stringify(packageVersion)
}),
/* TODO: deprecated due to removal of online favicon generation; is this still needed?
...(() => {
const langs = new Set();
function findLangs(json) {
@ -201,68 +189,28 @@ async function webpackConfig() {
console.error(e);
}
if (faviconApiVersion) {
cacheHash.update(faviconApiVersion);
}
const versionDigest = cacheHash.digest('hex');
return Array.from(langs).map(lang => {
const faviconConfig = { versioning: { param_name: 'v', param_value: versionDigest.substr(0,10) }, ...langJsons[lang] };
const tmpobj = tmp.fileSync({ postfix: ".json" });
fs.writeSync(tmpobj.fd, JSON.stringify(faviconConfig));
fs.close(tmpobj.fd);
const cacheDirectory = resolve('.well-known-cache', `${cacheDigest}-${lang}`);
if (fs.existsSync(wellKnownCacheDir)) {
console.log("Using favicons generated by nix");
return [
new CopyPlugin({
patterns: [
{ from: resolve(wellKnownCacheDir, lang), to: resolve('well-known', lang) }
]
return [
new CopyPlugin({
patterns: [
{ from: 'config/robots.txt', to: resolve('well-known', lang, 'robots.txt') },
]
}),
{ apply: compiler => compiler.hooks.afterEmit.tap('AfterEmitPlugin', compilation => {
const imgFiles = globSync(resolve('well-known', lang) + '/*.@(png)');
const imgFilesArgs = Array.from(imgFiles).join(" ");
execSync(`exiftool -overwrite_original -all= ${imgFilesArgs}`, { stdio: 'inherit' });
})
];
} else if (fs.existsSync(cacheDirectory) && (!faviconApiVersion || faviconApiVersion === cachedVersion)) {
console.log(`Using cached well-known from ${cacheDirectory} for ${lang}`);
return [
new CopyPlugin({
patterns: [
{ from: cacheDirectory, to: resolve('well-known', lang) }
]
})
];
} else {
const tmpobj = tmp.fileSync({ postfix: ".json" });
fs.writeSync(tmpobj.fd, JSON.stringify(faviconConfig));
fs.close(tmpobj.fd);
return [
new RealFaviconPlugin({
faviconJson: relative(".", tmpobj.name),
outputPath: resolve('well-known', lang),
inject: false
}),
new CopyPlugin({
patterns: [
{ from: 'config/robots.txt', to: resolve('well-known', lang, 'robots.txt') },
]
}),
{ apply: compiler => compiler.hooks.afterEmit.tap('AfterEmitPlugin', compilation => {
const imgFiles = globSync(resolve('well-known', lang) + '/*.@(png)');
const imgFilesArgs = Array.from(imgFiles).join(" ");
execSync(`exiftool -overwrite_original -all= ${imgFilesArgs}`, { stdio: 'inherit' });
})
},
{ apply: compiler => compiler.hooks.afterEmit.tap('AfterEmitPlugin', compilation => {
fs.ensureDirSync('.well-known-cache');
fs.copySync(resolve('well-known', lang), cacheDirectory);
if (!fs.existsSync(versionFile)) {
fs.writeFileSync(versionFile, faviconApiVersion, { encoding: 'utf8' });
}
})
}
];
}
}
];
}).flat(1);
})()
})() */
],
output: {
@ -303,4 +251,4 @@ async function webpackConfig() {
};
}
export default webpackConfig;
export default webpackConfig;