chore(webpack): update webpack config for major node and npm update

This commit is contained in:
Sarah Vaupel 2024-08-29 18:49:59 +02:00
parent b4a59f6b02
commit ae235bf269

View File

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2022-2024 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Sarah Vaupel <sarah.vaupel@ifi.lmu.de>,Sarah Vaupel <vaupel.sarah@campus.lmu.de>,David Mosbach <david.mosbach@uniworx.de> // SPDX-FileCopyrightText: 2022-2024 Sarah Vaupel <sarah.vaupel@uniworx.de>, Gregor Kleen <gregor.kleen@ifi.lmu.de>, Sarah Vaupel <sarah.vaupel@ifi.lmu.de>, Sarah Vaupel <vaupel.sarah@campus.lmu.de>, David Mosbach <david.mosbach@uniworx.de>
// //
// SPDX-License-Identifier: AGPL-3.0-or-later // SPDX-License-Identifier: AGPL-3.0-or-later
@ -9,10 +9,10 @@ tmp.setGracefulCleanup();
const fs = require('fs-extra'); const fs = require('fs-extra');
const glob = require('glob'); const glob = require('glob');
const { execSync } = require('child_process'); const { execSync } = require('child_process');
const request = require('request-promise'); const axios = require('axios');
const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin'); const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
const { WebpackManifestPlugin } = require('webpack-manifest-plugin'); const { WebpackManifestPlugin } = require('webpack-manifest-plugin');
const { CleanWebpackPlugin } = require('clean-webpack-plugin'); const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const CopyPlugin = require('copy-webpack-plugin'); const CopyPlugin = require('copy-webpack-plugin');
@ -27,25 +27,19 @@ const webpackVersion = require('webpack/package.json').version.split('.').slice(
const packageVersion = require('./package.json').version; const packageVersion = require('./package.json').version;
async function webpackConfig() { async function webpackConfig() {
const faviconNixDirectory = path.resolve(__dirname, '.nix-well-known'); const wellKnownCacheDir = path.resolve(__dirname, '.well-known-cache');
const assetsDirectory = path.resolve(__dirname, 'assets'); const assetsDirectory = path.resolve(__dirname, 'assets');
let faviconApiVersion = undefined; let faviconApiVersion = undefined;
if (!fs.existsSync(faviconNixDirectory)) { // FIXME: fetching current favicon api version broken right now (needs adaptation to axios)
try { // if (!fs.existsSync(wellKnownCacheDir)) {
const faviconApiChangelog = await request({ // try {
method: 'GET', // const faviconApiChangelog = await axios.get('https://realfavicongenerator.net/api/versions');
uri: 'https://realfavicongenerator.net/api/versions', // faviconApiVersion = faviconApiChangelog.filter(vObj => vObj.relevance.automated_update).slice(-1)[0].version;
headers: { // } catch(e) {
'Accept': '*/*' // console.error(e);
}, // }
json: true // }
});
faviconApiVersion = faviconApiChangelog.filter(vObj => vObj.relevance.automated_update).slice(-1)[0].version;
} catch(e) {
console.error(e);
}
}
return { return {
module: { module: {
@ -213,12 +207,12 @@ async function webpackConfig() {
const cacheDirectory = path.resolve(__dirname, '.well-known-cache', `${cacheDigest}-${lang}`); const cacheDirectory = path.resolve(__dirname, '.well-known-cache', `${cacheDigest}-${lang}`);
if (fs.existsSync(faviconNixDirectory)) { if (fs.existsSync(wellKnownCacheDir)) {
console.log("Using favicons generated by nix"); console.log("Using favicons generated by nix");
return [ return [
new CopyPlugin({ new CopyPlugin({
patterns: [ patterns: [
{ from: path.resolve(faviconNixDirectory, lang), to: path.resolve(__dirname, 'well-known', lang) } { from: path.resolve(wellKnownCacheDir, lang), to: path.resolve(__dirname, 'well-known', lang) }
] ]
}) })
]; ];
@ -285,13 +279,7 @@ async function webpackConfig() {
sourceMap: true sourceMap: true
} }
}), }),
new OptimizeCSSAssetsPlugin({ new MiniCssExtractPlugin(),
cssProcessorOptions: {
map: {
inline: false
}
}
})
], ],
moduleIds: 'named', moduleIds: 'named',
chunkIds: 'named', chunkIds: 'named',